両方のファイルを比較して、すべての文字列(この場合はソートされていませんが、行は問題ありません)file1
がfile 2
。
いくつかの調査をしてみると、このコマンドgrep -v -f file1 file2
でこれを行うことができるようですが、コマンドラインでこれを試みると、重複演算子オペランドが無効ですというエラーが発生します。
どんな助けでも大変感謝します。ありがとうございます!
ベストアンサー1
エラーメッセージは、1つ以上の行があることを示します。ファイル1正規表現の構文を尊重しません。正規表現の代わりに文字列をそのまま見つけるには、-F
[固定文字列]オプションを使用する必要があります。
grep
ただし、実際の問題は、短い行が長い行と間違って一致する可能性があるため、目的に合わせて使用できないことです。例えば、ファイル1行に空の行が含まれている場合、その行は一致します。みんな移動中ファイル2。
より良い方法は、ファイルをソートして次を使用することですdiff
。
TmpFile1=$(mktemp)
TmpFile2=$(mktemp)
sort $File1 >$TmpFile1
sort $File2 >$TmpFile2
# Display the lines in $File1 which do not appear in $File2
diff $TmpFile1 $TmpFile2 | grep '^>' | cut -c 3-
# Delete the temporary files
rm $TmpFile1 $TmpFile2