我在子目录中有.txt文件,我希望在包含字符串“ CHEESE”的行的第4列中提取字符串的第一个匹配项。
我正在使用的代码如下:
awk '/CHEESE/{print $4}' ./*/*/*.txt | pr -15s',' > ofile.csv
该命令不起作用,因为它在所有文件的特定列中打印所有出现的字符串。
我尝试添加“出口”,如下所示:
awk '/CHEESE/{print $4;exit;}' ./*/*/*.txt | pr -15s',' > ofile.csv
这打印了一个事件-但仅在一个文件中。
如何使所有文件仅打印一次?
先谢谢您。
答案 0 :(得分:0)
如果您使用的是GNU awk
,请尝试以下操作(由于我没有该目录结构,因此未经测试)。
awk '/CHEESE/{print $4;nextfile;}' ./*/*/*.txt | pr -15s',' > ofile.csv
或者不使用nextfile
尝试一次。
awk 'FNR==1{count=1} /CHEESE/ && count==1{print $4;count++}' ./*/*/*.txt | pr -15s',' > ofile.csv
答案 1 :(得分:0)
这应该做:
awk '/CHEESE/ && f!=1 {print $4;f=1}' ./*/*/*.txt | pr -15s',' > ofile.csv
仅当未设置f
时才打印。找到CHEESE
时,请设置f
,这样就不再打印了
答案 2 :(得分:0)
如果您使用的是gawk,则可以尝试使用nextfile
语句。