[英]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.