2013-08-19 2 views
0

나는 file1, file2의 두 파일을 가지고 있습니다. 나는 file1에 존재하지 않는 file2의 라인을 얻고 싶다.Linux Grep 델타

grep의 -v 플래그를 사용하여 읽었습니다 (grep의 man 페이지를 읽었지만 여전히 -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 
+0

시도 '은 diff'(및 일부 옵션) 'grep'대신 – jaeheung

+0

-v 플래그를 retu 하나의 파일 또는 다른 파일에있는 파일뿐만 아니라 두 파일에없는 항목도 있습니다. grep을 사용해야합니까, 아니면 간단한 스크립트 작업을할까요? – Bryan

답변

3

이 그렙 라인이 도움이 될 수

grep -Fvf file1 file2 

또는 AWK와 함께 :

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

그것은 나를 위해 완벽하게 작동합니다. -F 플래그를 조금 설명 할 수 있습니까? man 페이지에서 고정 문자열과 고정 패턴을 고정 문자열 세트로 해석합니다. 그것이하는 일을 이해하지 못했습니다. -F 지연이 없어도 여전히 나에게 잘 작동하는 것처럼 보입니다 –

+1

@ B.Mr.W. 'echo "abccc"| grep 'a. * c''와'echo "abccc"| grep -F'a. * c''를 시도하면 – Kent

+0

@ B.Mr.W가 표시됩니다. 당신의 주어진 예제는'-F'와 함께 /없이 작동하지만, file1의 한 줄이'a. * c'이고 file2에'abc'가 있으면'abc' 줄은 출력에 출력되지 않을 것입니다. 그러나 당신은 그것을 거기에서 가지고있을 것을 예상한다, 그렇지? – Kent