小编Joh*_*uck的帖子

输出文件名和“找到的字符串”位于输出文件的同一行

半新手。尝试使用 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 参数中嵌套各种位 - 但我尝试过的任何方法都不起作用(除非目的是生成错误消息)。

提前赞赏明显的指针......

awk filenames output

1
推荐指数
1
解决办法
641
查看次数

标签 统计

awk ×1

filenames ×1

output ×1