bash - 尝试合并 2 个文件但忽略新行
问题描述
我正在尝试将 2 个列表合并在一起:仅复制常见差异,但忽略新行。这可能更容易解释:
a.txt b.txt
abc 123
def abc.^$234,~12
ghi abcdd
jkl asdf
mnn ghi.^$321,~11
opq jkl
mnn^$qws
zxy
变成:
output.txt:
abc.^$234,~12
def
ghi.^$321,~11
jkl
mnn^$qws
opq
尝试合并到列表中,在删除新行的同时复制常用行。
解决方案
这可能对您有用(GNU sed):
sed -nE '1{x;s/.*/cat file2/e;x};G;s/^([^\n]+)(\n.*)*\n(\1\>[^\n]*).*/\3/;P' file1
将 file2 插入保存空间,然后将其附加到 file1 中的每一行。
如果 file1 中的单词与 file2 中的单词匹配,则打印 file2 中该行的内容。否则,打印 file1 中的当前行。