awk in while循环不工作

时间:2016-07-27 16:00:03

标签: bash awk while-loop

我正在尝试以下命令:

while read file
do
awk -v ID="$file" '$1==ID{print $0}' input2 > output
done < input1

input1如下所示:

1
2
3
4

input2如下所示:

2 a b c
3 a b c
5 a b c
6 a b c

输出应如下所示:

3 a b c

因此,换句话说,如果文件input2的第一列与文件input1中的一个值匹配,我希望将input2中的整行打印到输出。我从上面的while循环只生成空文件但是......可能是什么问题?非常感谢!

2 个答案:

答案 0 :(得分:3)

不要这样做,它效率极低且脆弱(见https://unix.stackexchange.com/questions/169716/why-is-using-a-shell-loop-to-process-text-considered-bad-practice)。这样做:

awk 'NR==FNR{ids[$0];next} $1 in ids' input1 input2 > output

答案 1 :(得分:2)

每次迭代都会破坏输出 使用&gt;&gt;而不是&gt;或者只是最后一次迭代显示