在粘贴文本上方的 shell 脚本中将文件名添加到附加文本文件
Add filename to appended text file in shell script above pasted text
正在处理脚本(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 实现吗?
您没有显示 filter.dat
脚本,但 gawk
确实知道当前输入文件的名称,可以将其合并到您的脚本逻辑中(参见 manual):
FILENAME
The name of the current input file. If no files are specified on the command line, the value of FILENAME is “-”.
However, FILENAME is undefined inside the BEGIN block
(unless set by getline).
如何 合并取决于 filter.dat
的组织方式。该脚本必须设置一个变量(将在重复使用时进行测试)以确保它只打印一次文件名。类似于这个片段:
BEGIN {
first = 1
}
... (just before printing rows)
if (first == 1) {
printf "\n**Output from file %s\n", FILENAME;
first = 0;
}
正在处理脚本(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 实现吗?
您没有显示 filter.dat
脚本,但 gawk
确实知道当前输入文件的名称,可以将其合并到您的脚本逻辑中(参见 manual):
FILENAME
The name of the current input file. If no files are specified on the command line, the value of FILENAME is “-”. However, FILENAME is undefined inside the BEGIN block (unless set by getline).
如何 合并取决于 filter.dat
的组织方式。该脚本必须设置一个变量(将在重复使用时进行测试)以确保它只打印一次文件名。类似于这个片段:
BEGIN {
first = 1
}
... (just before printing rows)
if (first == 1) {
printf "\n**Output from file %s\n", FILENAME;
first = 0;
}