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