grep 错误:重复运算符操作数无效

grep 错误:重复运算符操作数无效

我试图比较两个文件,看看所有字符串(在这种情况下,行都很好,尽管它们没有排序)是否file1存在于file 2.

我做了一些研究,似乎该命令grep -v -f file1 file2应该能够执行此操作,但是当我在命令行中尝试此操作时,我收到错误重复运算符操作数无效。

任何帮助将不胜感激,谢谢!

答案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

相关内容