5

我正在尝试使用Linux中的标准diff命令来查找2个文件的差异。文件内容如下:

文件 1

Jim
Jack
Tracy*
Michelle

文件2

Jim
Jack
Tracy
Michael

diff File1 File2 给了我以下信息:

< Tracy*
< Michelle
---
> Tracy
> Michael

但是,我希望 diff 忽略 asterix(*) 并给出以下输出:

< Michelle
---
> Michael

有可能这样做吗?

4

3 回答 3

4

尝试

diff -I '*$' FILE1 FILE2

-I RE --ignore-matching-lines=RE

忽略行都匹配 RE 的更改

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

于 2013-04-23T13:09:05.920 回答
1

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

diff <(sed 's/\*$//' file1) <(sed 's/\*$//' file2)
于 2013-04-23T13:28:50.697 回答
0

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

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

或者

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

(未经测试,但它也可以在其他 shell 中工作)

请注意 ,“星”已被删除,从差异的角度来看,它从未存在过。

于 2013-04-23T13:14:02.890 回答