awk 文件中的多个输入

awk 文件中的多个输入

请引导我摆脱困境。提前致谢。

我遇到的情况是,我必须编写一个 awk 脚本,它接受两个 .out 文件的输入并生成一个 .txt 文件。

$ cat file1.sh
awk -f awk_file.awk < outfile1.out outfile2.out  > text_file.txt

我想显示 .txt 文件,例如

----------------从文件1输出----------

column1 column2 column3
--------------------------------------------

columns i will pick from outfile1.out

columns i will pick from outfile1.out

--------------------------------------------
Total no. of columns from outfile1.out

//////////////////////////////////////////////// -- --------------文件2的输出----------

column1 column2 column3 column4 column5
-------------------------------------------
columns i will pick from outfile2.out

columns i will pick from outfile2.out

columns i will pick from outfile2.out

columns i will pick from outfile2.out

----------------------------------------
Total no. of columns from outfile2.out

如何生成text_file.txt???

答案1

这完全取决于你想要什么。如果您想一个接一个地处理文件,您只需使用循环按顺序对两个文件调用 awk 脚本,然后重定向输出:

(for file in outfile1.out outfile2.out; do awk -f awk_file.awk < "$file"; done)  > text_file.txt

或者在有两个文件的情况下,只需

(awk -f awk_file.awk < outfile1.out; awk -f awk_file.awk < outfile2.out) > text_file.txt

如果您想在使用 awk 处理之前将文件合并在一起(这会将它们视为单个文件),您只需这样做

cat outfile1.out outfile2.out | awk -f awk_file.awk > text_file.txt

让一个工具很好地完成一项工作,然后让 shell 将各个部分粘合在一起形成一个功能脚本,这是一个很好的做法。

相关内容