使用脚本(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吗?
答案 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;
}