在Linux中执行diff时忽略asterix(*)

在Linux中执行diff时忽略asterix(*),linux,diff,Linux,Diff,我试图在Linux中使用标准的diff命令,以查找2个文件中的差异。该文件的内容如下: 文件1 文件2 diff File1 File2为我提供了以下信息: < Tracy* < Michelle --- > Tracy > Michael 迈克尔 但是,我希望diff忽略asterix(*),并给出以下输出: < Michelle --- > Michael 迈克尔 可以这样做吗?试试看 diff -I '*$' FILE1 FILE2 -I RE

我试图在Linux中使用标准的diff命令,以查找2个文件中的差异。该文件的内容如下:

文件1

文件2

diff File1 File2为我提供了以下信息:

< Tracy*
< Michelle
---
> Tracy
> Michael
特蕾西
>迈克尔
但是,我希望diff忽略asterix(*),并给出以下输出:

< Michelle
---
> Michael
迈克尔
可以这样做吗?

试试看

diff -I '*$' FILE1 FILE2
-I RE--忽略匹配行=RE

忽略所有行都与RE匹配的更改


注意:这仅适用于行尾星号。

如果您使用的diff没有
-I
选项,则可以将包含星号的行grep到临时文件中,然后对临时文件进行diff。如果您使用的是bash,那么您可以使用“两个管道”,但是如果您使用了它,那么很可能您也使用了带有
-I
选项的diff。无论如何都是这样

sed 's/*$//' file1 >file1.temp
sed 's/*$//' file2 >file2.temp
diff file1.temp file2.temp


diff使用ShinTakezou的方法,但这次使用的是
sed

diff <(sed 's/\*$//' file1) <(sed 's/\*$//' file2)

diff无法按预期工作。grep-v事实删除任何包含asterix的行,因此一个临时文件有tracy,另一个没有。我正在寻找一个忽略asterix的选项。问题出错了。。。你有兴趣把星号保留在最后的差异中吗?如果不是这样,解决办法很容易。否则在飞行中我不知道,diff
-I
公寓不工作。。。diff-I'$'文件1文件2 3,4c3,4Tracy>MichaelDid您是否在
-I
之后漏掉了星号?原因可能就在这里——我已经尝试过,但没有漏掉星号,并凭直觉确认星号无法正常工作。
sed 's/*$//' file1 >file1.temp
sed 's/*$//' file2 >file2.temp
diff file1.temp file2.temp
diff <(sed 's/*$//' file1) <(sed 's/*$//' file2)
diff <(sed 's/\*$//' file1) <(sed 's/\*$//' file2)