如何在Unix系统中按指定格式合并两个文件?
问题描述
现有两个文本文件,内容如下:
- 文件1内容:
A B C D E F
- 文件2内容:
1 2 3
需要生成如下输出:
1 A B C 2 E F G
解决方案
可以使用awk脚本来实现需求,脚本会预先读取两个文件内容,再按规则输出:
BEGIN { # 读取文件1内容存入数组 while ((getline line < "file1.txt") > 0) { content[++cnt] = line } close("file1.txt") # 读取文件2的标记存入数组 while ((getline line < "file2.txt") > 0) { marks[++mark_cnt] = line } close("file2.txt") } END { # 输出标记1及对应内容 print marks[1] print content[1] print content[2] print content[3] # 输出标记2及对应内容(跳过D) print marks[2] print content[5] print content[6] # 添加额外行G print "G" }
使用步骤
- 将文件1命名为
file1.txt,文件2命名为file2.txt - 把上述脚本保存为
merge_files.awk - 在终端执行命令:
awk -f merge_files.awk
执行后就能得到期望的输出内容。
内容的提问来源于stack exchange,提问作者Gunaseelan Meyyappan
相关产品推荐
相关产品推荐

