50000行を超えるデフォルトファイルがあり、実際のファイルから約20000行を削除する必要があります。この場合、パラメータが多すぎるため、grep -vE
私が使用しているコマンドにエラーが表示されます。
sed
forループを使用して削除するコマンドを使用しています。ところでsed
初期化する命令が20000個あって削除するのに時間がかかります。
for i in `cat 20000-words.txt`; do
sed -i -e "/$i/ d" 50000-lines.txt
done
答え1
20000-words.txt がすでに 1 行に 1 つの単語形式になっているとします。
grep -vFf 20000-words.txt 50000-lines.txt >50000-filtered-lines.txt
grepの引数は、-f
コマンドライン引数として渡すのではなく、ファイルからパターンを1行に1つずつ読み込むように指示します。 grep の引数は、-F
パターンを正規表現ではなくリテラル文字列として使用する必要があることを示します。
答え2
これを行い、grep
重複行がないと仮定すると、次のことができます。
$ sort 20000-words.txt 50000-lines.txt | uniq -u
または:
$ comm -23 <(sort 50000-lines.txt) <(sort 20000-words.txt)