我正在寻找一个 awk 或 sed 解决方案来根据匹配的模式组合 2 个文件,如下所示:本例中的模式是“cat”。文件 2 中的行数始终等于文件 1 中的模式匹配数。
文件1:
I am a cat
I am a dog
I am a dog
I am a cat
I am a dog
文件2:
line 1
line 2
合并文件:
I am a cat
line 1
I am a dog
I am a dog
I am a cat
line 2
I am a dog
最佳答案
NR==FNR
构造非常方便,但如果您要加载到内存中的文件非常非常大,则可能存在风险。
相反,awk 可以同时读取两个文件。
$ awk '1; /cat/{getline this<"file2";print this}' file1
I am a cat
line1
I am a dog
I am a dog
I am a cat
line2
I am a dog
程序开头的 1
打印 file1
中的当前行,无论它是什么。脚本中的第二个条件检查您的魔术词,然后从 file2
读取并打印它。您的内存占用量仍然很小,因为您没有使用其中一个文件的内容填充数组。
关于linux - 找到 PATTERN 时合并两个文本文件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38621535/