-3

A と B の 2 つのテキスト ファイルには、改行またはスペース区切りで区切られた複数の単語項目が含まれています。ここで、A と B を比較し、2 つのファイルで同じ項目を見つけて、bash で A から削除します。何か良いアイデアはありますか?

4

2 に答える 2

3

アルフェの答えは正しいようです。ただし、出力ファイルの単語区切りが気にならない場合は、これが最適な解決策になる可能性があります。

grep -w -v -f <(sed 's/[ \n\t]\+/\n/g' A) <(sed '$s/[ \n\t]\+/\n/g' B)

両方のファイルのデータがソートされている/同じ順序である場合は、使用することもできますcomm

comm -13 <(sed 's/[ \n\t]\+/\n/g' A) <(sed 's/[ \n\t]\+/\n/g' B)
于 2013-10-28T14:45:50.507 に答える
1

私があなたを正しく理解しているかどうかわからないので、この答えは暗闇の中で撮影されています.

最初に、各行に 1 つの単語を含むバージョンのファイルを作成します。次に、B をステップ実行します。

while read word; do …; done < B

B で見つかった単語ごとに、A から削除します (上の … で):

sed -i "s/^$word$//" A

たぶんそれが役立ちます。

于 2013-10-28T14:29:32.313 に答える