grepエラー:無効な反復演算子オペランド

grepエラー:無効な反復演算子オペランド

両方のファイルを比較して、すべての文字列(この場合はソートされていませんが、行は問題ありません)file1file 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

おすすめ記事