Shell 用于两个文件的Diff命令并输出到第三个文件

Shell 用于两个文件的Diff命令并输出到第三个文件,shell,diff,csh,Shell,Diff,Csh,在shell脚本中使用diff命令比较两个文件时,我遇到了一个小问题。假设我有两个ascii文件,file1.txt和file2.txt,内容如下: file1.txt blah/blah2/content.fits/ blah3/blah4/content2.fits/ blah5/blah6/content3.fits/ blah7/blah8/content4.fits/ file2.txt content.fits content2.fits 现在,我想根据.fi

在shell脚本中使用diff命令比较两个文件时,我遇到了一个小问题。假设我有两个ascii文件,file1.txt和file2.txt,内容如下:

file1.txt

blah/blah2/content.fits/  
blah3/blah4/content2.fits/  
blah5/blah6/content3.fits/  
blah7/blah8/content4.fits/  
file2.txt

content.fits  
content2.fits
现在,我想根据.fits扩展名对这两个文件进行比较,但将输出写入一个ascii文件,将格式保留在file1.txt中,即在这个特定示例中,比较这两个文件后的输出文件应给出:

blah5/blah6/content3.fits/  
blah7/blah8/content4.fits/  

有什么想法吗?

您可以使用此awk获得该输出:

awk -F/ 'FNR==NR {a[$1];next} !($(NF-1) in a)' file2.txt file1.txt
blah5/blah6/content3.fits/
blah7/blah8/content4.fits/

你到底想要实现什么?diff命令将显示两个不相同文件的内容。在您的示例中,blah/blah/content.fits/和content2.fits不会被视为共同点。首先检查diff命令。我想你更喜欢模式匹配,而不是diff。grep-vwf file2.txt file1.txt是你想要的吗?我想比较两个文件,然后将差异写入第三个文件,类似于diff file1.txt file2.txt>output.txt,但我想保留file1.txt的格式