从变量中提取第n列

时间:2017-11-20 04:10:47

标签: bash shell

我有一个变量Firstline,其值为FHEAD,0000000001,STKU,20150927000000,201509270000000000,1153,,0000000801,W,我只需要5th字段。

任何人都可以帮我解决这个问题。

我使用了以下命令,但它给了我一个错误

echo "FHEAD,0000000001,STKU,20150927000000,201509270000000000,1153,,0000000801,W" | awk -f ',' '{print $5}'

awk: fatal: can't open source file ,' for reading (No such file or directory)

3 个答案:

答案 0 :(得分:2)

当您将其标记为bash而非awk(这也是有效的解决方案)时,您可以

IFS=, read -a a <<< "FHEAD,0000000001,STKU,20150927000000,201509270000000000,1153,,0000000801,W"
echo ${a[4]}

获得相同的结果而不产生新进程(请注意bash数组是从0开始的。)

答案 1 :(得分:1)

尝试-F而非-f

-F用于字段分隔符

-f用于awk程序的文件名。

答案 2 :(得分:0)

您也可以使用sed

echo "..." | sed -E 's/([^,]*,){4}([^,]*).*/\2/'