5

2 つのファイルの違いを見つけるために、Linux の標準の diff コマンドを使用しようとしています。ファイルの内容は次のとおりです。

ファイル1

Jim
Jack
Tracy*
Michelle

ファイル2

Jim
Jack
Tracy
Michael

diff File1 File2 は私に次を与えます:

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

ただし、diff でアスタリスク (*) を無視して、次の出力が得られるようにします。

< 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星を含む行を一時ファイルに grep してから、一時ファイルを差分することができます。bash を使用している場合は、「2 つのパイプ」を使用できますが、使用している場合は、-Iオプションとの差分もある可能性があります。どう考えてもそうだろう

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

また

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

(テストされていませんが、他のシェルでも動作する可能性があります)

「星」が削除され、差分の観点からは存在しなかったことに注意してください。

于 2013-04-23T13:14:02.890 に答える