如何将文本文件的第2行替换为另一个文本文件列表。例如:猫filea.txt,我爱粉红,我爱蓝色,我爱猫,我爱莫莫猫,我讨厌叶洛,我讨厌白猫,我讨厌我讨厌猪,现在我需要输出,因为我爱粉红,我爱耶洛,我爱狗,我讨厌老鼠Text胆b应该代替第2行的文本丝线而不附加它。我们如何使用-i和sed或awk来实现这一点。我试着用粘贴的comand来做这件事,而不是用它来代替它。
发布于 2020-11-09 18:33:45
使用GNU,您可以使用R命令:
R filename Append a line read from filename. Each invocation of the command reads a line from the file. This is a GNU extension.
所以
$ sed 'R fileb.txt' filea.txt
I love Pink
I hate yello
I love Blue
I hate white
I love Dogs
I hate rats
I love MOMO
I hate pigs结合d删除原始行:
$ sed -e '2~2{R fileb.txt' -e 'd;}' filea.txt
I love Pink
I hate yello
I love Dogs
I hate white如果要将filea.txt的第2行替换为fileb.txt的第2行,那么:
$ sed '2~2d' fileb.txt | sed -e '2~2{R /dev/stdin' -e 'd;}' filea.txt
I love Pink
I hate yello
I love Dogs
I hate rats或者,使用paste并排连接文件的行,然后通过管道将默认的选项卡分隔符更改为仅在奇数行上的换行符:
$ paste filea.txt fileb.txt | sed -n '1~2s/\t/\n/p'
I love Pink
I hate yello
I love Dogs
I hate rats显然,如果原始的filea.txt可能包含制表符,这是行不通的。
由于您还标记了您的问题awk,所以您也可以考虑如下
awk '{getline x < "fileb.txt"} NR%2 {print; print x}' filea.txthttps://askubuntu.com/questions/1290954
复制相似问题