我知道如何合并两个表,以便在新文件中打印替代行,但我希望将file1.txt中的每两行合并一次,并将file2.txt中的一行合并。例如:
file1.txt是
A a aa
B b bb
C c cc
D d dd而file2.txt是
E e ee
F f ff我想要
A a aa
B b bb
E e ee
C c cc
D d dd
F f ff发布于 2018-11-25 10:03:00
使用GNU,您可以在第一行(“两个跳过两个”)之后从第二个文件中读取和插入一行:
$ sed '2~2R file2.txt' file1.txt
A a aa
B b bb
E e ee
C c cc
D d dd
F f ff在awk中稍微长一些的实现相同:
awk '{print} !(NR%2) {if ((getline < "file2.txt") > -1) print}' file1.txt发布于 2018-11-25 08:15:51
您可以为此使用paste命令:
% paste -d '\n' - - file2.txt < file1.txt
A a aa
B b bb
E e ee
C c cc
D d dd
F f ff默认情况下,paste从每个输入文件中提取行,然后将它们合并到由制表符分隔的一行中。使用-d '\n',我们告诉它使用换行符作为分隔符。-是标准输入,从file1.txt (< file1.txt)重定向。因此,paste从标准输入取一行,从标准输入取另一行(实际上是从file1.txt取两行,然后从file2.txt输出一行,然后用换行符隔开它们。
https://askubuntu.com/questions/1095842
复制相似问题