将文件名添加到粘贴文本上方的shell脚本中的附加文本文件中

时间:2015-05-04 21:07:13

标签: macos bash shell terminal gawk

使用脚本(Mac OSX Yosemite,在终端中工作),我分析了很多文件以及我想在一个文本文件中添加脚本输出的位置。

gawk -f ./user/filter.dat ./user/outputpre1.out >> ./user/outputpost.out
gawk -f ./user/filter.dat ./user/outputpre2.out >> ./user/outputpost.out

对于解释,找到输出的来源非常有用。我现在的输出只是行,如下所示:

ROW1:OUTPUTOUTPUT
ROW2:OUTPUTOUTPUT
ROW8:OUTPUTOUTPUT
ROW10:OUTPUTOUTPUT

我想要的是什么:

**Output from file outputpre1.out
ROW1:OUTPUTOUTPUT
ROW2:OUTPUTOUTPUT

**Output from file outputpre2.out
ROW8:OUTPUTOUTPUT
ROW10:OUTPUTOUTPUT

这可以通过gawk吗?

1 个答案:

答案 0 :(得分:1)

您不显示filter.dat脚本,但gawk确实知道当前输入文件的名称,该名称可以合并到脚本的逻辑中(请参阅manual) :

  

<强> FILENAME

     

当前输入文件的名称。如果在命令行中未指定文件,则 FILENAME 的值为“ - ”。   但是,在 BEGIN 块中未定义 FILENAME   (除非由getline设置)。

如何合并取决于filter.dat的组织方式。该脚本必须设置一个变量(将在重复使用时进行测试),以确保它只打印一次文件名。类似这样的片段:

BEGIN {
    first = 1
}
... (just before printing rows)
if (first == 1) {
    printf "\n**Output from file %s\n", FILENAME;
    first = 0;
}