我正在尝试以下命令:
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循环只生成空文件但是......可能是什么问题?非常感谢!
答案 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;或者只是最后一次迭代显示