与えられたファイル1 ...
2/26a- 6
23/26a- 20z
23/26A-18
そしてファイル2 ...
2/26a-6
23/26a- 20Z
23/26A-18
25/2a -18
22/34B-19
ファイル2からファイル1の内容を取得する方法は?ここで出力は次のようになります。
2/26a-6
23/26a- 20Z
23/26A-18
(したがって正確な一致ではありませんが、一部の共有コンテンツです。)一致は大文字と小文字を区別する必要があります。
答え1
あなたのため:
tr -d " \t\r" < file1 > X
tr -d " \t\r" < file2 > Z
それから:
grep --ignore-case -Fxf X Z
完璧!
答え2
file1の内容を変更して、1つ以上の空白文字シーケンスをゼロ個以上の空白文字を表す正規表現に置き換えることができます。
sed 's/[[:space:]]\{1,\}/[[:space:]]*/g' file1
2/26a-[[:space:]]*6
23/26a-[[:space:]]*20z
23/26A-18
次に、大文字と小文字を区別しないgrepのパターンファイルとして使用します。
sed 's/[[:space:]]\{1,\}/[[:space:]]*/g' file1 | grep -if- file2
2/26a-6
23/26a- 20Z
23/26A-18
注:この方法は、項目にfile1
他の特殊文字が含まれていない場合にのみ機能します。もしそうなら、適切にエスケープする必要があります。