繁体   English   中英

比较文件1和文件2,但仅显示不在文件2中的新行

[英]Compare file1 and file2 but show only new lines which are not in file2

我目前正在努力比较两个文件。 这两个文件的值都具有差异和换行符。 例:

文件1:

Germany=Munich
Swiss=Bern
Austria=Wien
Italy=Rom

文件2:

Germany=Berlin
Swiss=Bern
Italy=Rom

我采取行动的结果应该是:

输出文件:

Austria=Wien

我如何才能只获得文件2中尚未存在的行到输出文件? 我对线条的差异不感兴趣。 只是缺少的完整行。

我已经用diff和sdiff进行了实验,但是没有理想的结果。

谢谢

这应该工作:

awk -F= 'NR==FNR{a[$1]=$0;next}!($1 in a)' file2 file1
Austria=Wien

我们读取了首先在国家/地区索引的整个file2。 我们检查文件1中是否不存在该国家/地区并进行打印。 这不会为您提供在file2中但不在file1中的行结果,但是也可以对其进行调整。 我不确定这是否是您的要求。 如果是,那么请更新您的问题以反映您的所有用例以获得更完整的答案。

如果您不关心排序,则可以对文件进行排序,然后使用join

sort file1 > file1.srt
sort file2 > file2.srt
join -t'=' -v1 file1.srt file2.srt

join的标志指定使用等号作为字段分隔符,包括来自file1.srt的不可配对行,同时禁止来自file1.srt的可配对行。

这可能对您有用(GNU sed):

sed -r 's#([^=]*=).*#/^\1/d#' file2 | sed -f - file1

使用file2作为sed脚本的基础,并针对file1运行此sed脚本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM