awk +将值导出到awk

时间:2010-07-05 10:20:52

标签: awk

以下程序需要打印单词

First 

Second 

Third

但是因为来自awk的i参数没有得到“for”循环的值所以打印所有单词:

     First second third
     First second third
     First second third

如何修复awk以便先打印“第一”字,然后再打印“第二”字等等

THX

耶尔

 program:

 for i in 1 2 3
 do
 echo "first second third" | awk '{print $i}'
 done

4 个答案:

答案 0 :(得分:2)

您可以像这样更改代码:

for i in 1 2 3
do
 echo "first second third" | awk -v i=$i '{print $i}'
done

使用shell中的变量'i'。

您也可以只更改记录分隔符(RS)以获得相同的结果:

echo "first second third" | awk 'BEGIN{RS=" "} {print $1}'

但我不确定这是不是你想要的。

答案 1 :(得分:2)

你可以这样做:

for a in First Second Third
do
    awk 'BEGIN { print ARGV[1] }' $a
done

或者你可以这样做:

for a in First Second Third
do
    awk -v arg=$a 'BEGIN { print arg }'
done

答案 2 :(得分:2)

不要做不必要的事。不需要shell for循环!用awk做吧!

$ echo "first second third" | awk '{for(i=1;i<=NF;i++)print $i}'

答案 3 :(得分:0)

或者您可以使用:

echo "first second third" | awk -F " " -v OFS="\n"  '{print $1,$2,$3}'