Join -v의 반대입니까?

Join -v의 반대입니까?

join -v1 fileA fileB나는 말하는 것과 반대되는 작업을 수행해야 합니다 . fileA의 첫 번째 필드가 fileB의 모든 줄의 첫 번째 필드와 일치하지 않는 줄을 인쇄해야 합니다. 대신 fileA에 줄을 쓰고 싶습니다.하다(첫 번째 필드에서)은 fileB의 줄과 일치합니다.

make 를 시도했지만 join -o 1.1 2.1 fileA fileB첫 번째 파일에 작성된 줄 대신 겹치는 줄이 반복됩니다(동일한 경우).

가장 쉬운 방법은 무엇입니까?

답변1

사토 카츠라가 연기한댓글을 달았습니다., fileB의 필드 1만 보도록 조인을 "속인" 다음 일반 조인을 수행하도록 요청할 수 있습니다. 그러면 fileA의 줄과 (스푸핑된) fileB의 (빈) 나머지 줄이 인쇄됩니다.

join fileA <(awk '{print $1}' fileB)

주어진 입력 파일:

$ cat fileA
1 blah
2 foo
3 bar

$ cat fileB
3 barely
4 baz
5 qux

결과 출력은 다음과 같습니다.

$ join fileA <(awk '{print $1}' fileB)
3 bar

와일드카드awk의 출력을 다음으로 파이프하여 이를 보다 직접적으로(프로세스 대체 방지) 수행할 수 있음을 지적합니다 join.

awk '{print $1}' fileB | join fileA -

답변2

comm두 파일이 모두 정렬된 경우 다음과 같이 파일에 없는 줄을 표시할 수 있습니다 .fileAfileB

comm -23 fileA fileB

fileB아니면 그 안에 없는 행도 원하시나요 fileA?

관련 정보