1
我写了一个单行代码,用于搜索文件夹中的某些文件的字符串列表。使用awk在i循环中打印“n”个字段的数字
的想法是创建一个新的输出,列出被搜索的字符串,然后是所有它发现它在文件中。
文件列表包含以下
alexl-lap:projects alexl$ cat list
abc-123
def-456
这是我到目前为止有:
alexl-lap:projects alexl$ for i in `cat list` ; do printf "\n$i:\n" ; grep -l --color=always $i * | /usr/bin/awk '{printf("%s\n", $0)}' ; done >> log.txt
alexl-lap:projects alexl$ cat log.txt
abc-123:
file1.txt
file2.txt
file3.txt
def-456:
file1.txt
file2.txt
file3.txt
file4.txt
file5.txt
如果我现在运行下面的命令,这是我得到
alexl-lap:projects alexl$ /usr/bin/awk 'BEGIN{RS="";FS="\n"} {print $1 " " $2 "" $3 "" $4 "" $5 " "}' < log.txt
abc-123: file1.txt file2.txt file3.txt
def-456: file1.txt file2.txt file3.txt file4.txt file5.txt
这种使用手动指定字段显然是不好的做法。如果在15个文件中找到正在搜索的字符串,则需要包含1-15个字符。
如何使用'nth'变量来实现这一点?
我想要相同的输出,但awk查看文件的文件数量,并打印所有这些后,它搜索的字符串(在一行中)。
感谢
嗯,似乎有很多不必要的步骤,在这里拍摄 - 你能[编辑]你的问题,解释正是你想做什么,我们展示一个输入和输出样本? –
希望这会有所帮助 – ARL