半新手。尝试使用 awk 脚本实现自动化。理论上应该很简单。
文件集,全部以 .lst 结尾。每个文件中都有一行(数百行)带有特定的字符串 - 比如说单词“Wall”。我希望做的是最终得到一个文件,其中每行以(i)文件名和(ii)输出字符串结尾。我有“部分”单独工作,但还没有弄清楚如何将它们组合在一起(以生成通用输出文件)。
所以,假设我有 3 个 *.lst 文件(file1.lst、trash.lst、blah.lst)。我可以使用类似以下内容将文件名输出到文件中(毫无疑问有更好的方法,但它有效......):
ls -l *.lst | awk '{ print "File: " $9 }' > filenames.dat
Run Code Online (Sandbox Code Playgroud)
而且,可以轻松地将每个 *.lst 文件中包含“Wall”的行输出到公共文件,使用类似以下内容:
awk '/Wall/{print}' *.lst > wallvals.dat
Run Code Online (Sandbox Code Playgroud)
我可以通过各种方式对两者进行后处理和合并,但我想弄清楚如何使用 awk 在一行中完成这一切。因此,生成的输出文件可能如下所示:
File: file1.lst Wall data 4.54
File: trash.lst Wall data 3.44
File: blah.lst Wall data 333.66
Run Code Online (Sandbox Code Playgroud)
我尝试过各种管道方法,或者在 awk 参数中嵌套各种位 - 但我尝试过的任何方法都不起作用(除非目的是生成错误消息)。
提前赞赏明显的指针......