Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Grep三角洲_Linux_Grep - Fatal编程技术网

Linux Grep三角洲

Linux Grep三角洲,linux,grep,Linux,Grep,我有两个文件:file1,file2。我想从文件2中获取文件1中不存在的行 我读过一篇文章,它告诉我使用grep的-v标志来做这件事(我读了grep的手册页,但仍然不太明白如何使用-F和-x标志),但到目前为止我没有运气 $ cat file1 Eric Cartman Kenny McCormick $ cat file2 Stan Marsh Kyle Broflovski Eric Cartman Kenny McCormick $ grep -v file1 file2 Stan

我有两个文件:file1,file2。我想从文件2中获取文件1中不存在的行

我读过一篇文章,它告诉我使用grep的-v标志来做这件事(我读了grep的手册页,但仍然不太明白如何使用-F和-x标志),但到目前为止我没有运气

$ cat file1
Eric
Cartman
Kenny
McCormick

$ cat file2
Stan
Marsh
Kyle
Broflovski
Eric
Cartman
Kenny 
McCormick

$ grep -v file1 file2
Stan
Marsh
Kyle
Broflovski
Eric
Cartman
Kenny 
McCormick
我的预期输出应该如下所示:

Stan
Marsh
Kyle
Broflovski

此grep行可能有助于:

 grep -Fvf file1 file2
或使用awk:

 awk 'NR==FNR{a[$0]=1;next}!a[$0]' file1 file2

此grep行可能有助于:

 grep -Fvf file1 file2
或使用awk:

 awk 'NR==FNR{a[$0]=1;next}!a[$0]' file1 file2

尝试使用'diff'(及其一些选项)而不是'grep',v标志返回不在两个文件中的项目,而不仅仅是在一个或另一个文件中的文件。您必须使用grep还是使用短脚本?请尝试使用“diff”(及其一些选项)而不是“grep”。-v标志返回的项目不在两个文件中,而不仅仅是一个或另一个文件中的文件。你一定要用grep吗?还是一个简短的脚本就行了?这对我来说太完美了。你能解释一下-F标志吗?在手册页中,它表示固定字符串,并将模式解释为一组固定字符串。我不太明白它的作用。即使没有-F,它对我来说仍然很好lag@B.Mr.W. 尝试
echo“abccc”| grep'a.*c'
echo“abccc”| grep-F'a.*c'
您将see@B.Mr.W. 您给出的示例使用/不使用
-F
,但如果文件1中有一行是
a.*c
,而文件2中有
abc
,则输出中将不会打印
abc
行。但是你希望它在那里,对吗?你的解释太棒了!如果没有F标志,grep可能会将第一个参数作为正则表达式,如果你有“$*”,那么可能会发生意想不到的事情。。。所以保留F作为默认值也是很好的。这对我来说非常合适。你能解释一下-F标志吗?在手册页中,它表示固定字符串,并将模式解释为一组固定字符串。我不太明白它的作用。即使没有-F,它对我来说仍然很好lag@B.Mr.W. 尝试
echo“abccc”| grep'a.*c'
echo“abccc”| grep-F'a.*c'
您将see@B.Mr.W. 您给出的示例使用/不使用
-F
,但如果文件1中有一行是
a.*c
,而文件2中有
abc
,则输出中将不会打印
abc
行。但是你希望它在那里,对吗?你的解释太棒了!如果没有F标志,grep可能会将第一个参数作为正则表达式,如果你有“$*”,那么可能会发生意想不到的事情。。。因此,保持F为默认值也是很好的。