2015-05-04 64 views
0

使用脚本(Mac OSX Yosemite,在终端中工作),在其中分析许多文件并在其中添加脚本输出的位置文件。将文件名添加到粘贴文本上方的shell脚本中的附加文本文件

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

你不显示filter.dat脚本,但gawk不知道当前输入文件,它可以纳入你的脚本逻辑的名称(见manual):

FILENAME

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

如何将被纳入取决于filter.dat是如何组织的。该脚本将不得不设置一个变量(这将在重复使用中进行测试),以确保它只打印一次文件名。像这样的片段:

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

感谢您的回答。 filter.dat很容易组织。 '{如果($ 21> 0.005){} 其他 { 打印$ 0 } }' – Scaevola

+0

现在我设法补充文件名,在 “打印$ 0” 命令后添加。我只是不确定把这个代码的其余部分放在这个filter.dat文件中。 – Scaevola