请引导我摆脱困境。提前致谢。
我遇到的情况是,我必须编写一个 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 将各个部分粘合在一起形成一个功能脚本,这是一个很好的做法。