下面的程序需要打印单词
First
Second
Third但是因为awk中的参数没有从“for”循环中获得值,所以它的print all word:
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发布于 2010-07-05 18:26:58
您可以像这样更改代码:
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}'但我不确定这是不是你要找的。
发布于 2010-07-05 18:55:19
你可以这样做:
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发布于 2010-07-05 19:07:02
不要做不必要的事情。不需要shell for循环!只要用awk就行了!
$ echo "first second third" | awk '{for(i=1;i<=NF;i++)print $i}'
https://stackoverflow.com/questions/3178703
复制相似问题