한 파일에서 한 줄을 읽고 두 번째 파일에 해당 줄이 있는지 확인하는 스크립트를 만들어야 합니다. ', " 및 \와 같은 파일의 특수 문자를 처리하는 방법은 무엇입니까?
첫 번째 파일:
a.txt
aa
bb
cc
f
'f'
"g"
'h'
두 번째 파일:
b.txt
cc
dd
'f'
"g"
g
h
주문하다:
cat a.txt | xargs -I{} grep -w {} b.txt
반품:
cc
'f'
'f'
"g"
g <- it shouldn't be there
h <- it shouldn't be there
예상되는:
cc
'f'
"g"
나의 경우 마지막 항목(h)은 a.txt 파일에 존재하지 않기 때문에 나열하면 안 된다. "h"(작은따옴표)만 가능합니다. 앞으로 예상치 못한 상황이 발생하지 않도록 하려면 일반적으로 어떻게 처리해야 합니까?
답변1
이것이 바로 이 comm
유틸리티의 목적입니다. 일반적으로 이 줄을 실행하여 입력 파일을 정렬하고 에 공급할 수 있습니다 comm
. 이러한 -12
옵션은 파일 1과 2에 고유한 줄을 표시하지 않고 공통 줄만 표시한다는 의미입니다.
comm -12 <(sort a.txt) <(sort b.txt)
cc
'f'
"g"