我正在尝试在Linux中使用标准diff命令,以便找到2个文件的差异。该文件的内容如下:
File1中
Jim
Jack
Tracy*
Michelle
文件2
Jim
Jack
Tracy
Michael
diff File1 File2给出了以下内容:
< Tracy*
< Michelle
---
> Tracy
> Michael
但是,我希望diff忽略asterix(*)并提供以下输出:
< Michelle
---
> Michael
有可能吗?
答案 0 :(得分:4)
尝试
diff -I '*$' FILE1 FILE2
-I RE --ignore-matching-lines = RE
忽略其行符合RE
的更改
注意:这仅适用于行尾星号。
答案 1 :(得分:1)
使用ShinTakezou的方法,但这一次使用sed
:
diff <(sed 's/\*$//' file1) <(sed 's/\*$//' file2)
答案 2 :(得分:0)
如果使用不具有-I
选项的差异,则可以将包含星形的行格式化为临时文件,然后区分临时文件。如果你正在使用bash,你可以使用&#34;两个管道&#34;,但如果你有它可能你也有使用-I
选项的差异。无论如何它将是
sed 's/*$//' file1 >file1.temp
sed 's/*$//' file2 >file2.temp
diff file1.temp file2.temp
或
diff <(sed 's/*$//' file1) <(sed 's/*$//' file2)
(未经测试,但也可以在其他炮弹中使用)
注意强> &#34;明星&#34;被删除,从差异的角度来看,它从未存在过。