在for / while循环中使用awk命令

时间:2017-06-03 04:49:28

标签: bash loops awk

这是我的输入文件(rpm.txt)的内容。

U25,1007
U27,1269

我希望我的代码使用此文件(rpm.txt)作为输入,将目录更改为U25,并在U25 / test.csv中搜索1007,并打印test.csv中与1007匹配的所有列;并重复每一行。

这是没有循环的代码:

cat U25/test.csv | awk -F ',' '$1 == 1007 {print $0}' > x
cat U27/test.csv | awk -F ',' '$1 == 1269 {print $0}' >> x

有人能帮我把它写成循环吗?

2 个答案:

答案 0 :(得分:2)

怎么样?
while IFS=, read dir num; do
    awk -v num="$num" ... '$1 == num ... '  <"$dir"/test.csv
done <rpm.txt >x

答案 1 :(得分:0)

通过创建grep "^1007," U25/test.csv之类的命令并将它们提供给shell,这是一种没有任何循环的愚蠢方法:

sed 's!\(.*\),\(.*\)!grep "^\2," \1/test.csv!' input | sh