2017-08-14 55 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