首页 > 解决方案 > 尝试合并 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

尝试合并到列表中,在删除新行的同时复制常用行。

标签: bashsed

解决方案


这可能对您有用(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 中的当前行。


推荐阅读