2017-08-14 41 views
0

我知道如何使用IFS等冒號來拆分字符串。然而,隨着劇本我目前正在寫,我正在返回的東西我在我想剛剛得到的生日日期的按行和冒號拆分字符串的問題

Birthday  :  mon, date, year 
First day  :  mon, date, year 

格式的命令。爲了做到這一點,我目前做的:

IFS=: read -r -a DATEARR <<< "$DATES" 
echo "${DATEARR[1]}" 

這將打印的理想剛過自帶日期「生日」,但遺憾的是沒有什麼是打印。有小費嗎?我是否應該逐行分割這個字符串?

預期的輸出,我想的是: 星期一,日期,年份(對應於生日字段)

+0

您的預期產出是多少? – anubhava

+0

@anubhava剛剛添加了這個問題,但它的週一,日期,年份(對應於生日字段) –

回答

0

awk這是裁縫做的工作有一個自定義字段分隔符:

awk -F '[[:blank:]]*:[[:blank:]]*' '{print $2}' file 

mon, date, year 
mon, date, year 

請注意,IFS=:,你會得到一個字符串左側填充空格:

while IFS=: read -r -a DATEARR; do echo "${DATEARR[1]}"; done < file 

     mon, date, year 
     mon, date, year 

您可以使用此祛瘀e所有空間:

while IFS=: read -r -a DATEARR; do echo "${DATEARR[1]//[[:blank:]]}"; done < file 

mon,date,year 
mon,date,year 
+0

如何在使用awk的時候指定我用於DATEARR? –

+0

你的意思是即使使用'awk',你也想要一個BASH數組?你可以在awk中完成所有的處理。 – anubhava

+0

如果你確實需要BASH數組變量,那麼你可以使用'while'循環使用我的其他解決方案。 – anubhava