두 파일의 첫 번째 열 값과 세 번째 열 값 비교 [닫기]

두 파일의 첫 번째 열 값과 세 번째 열 값 비교 [닫기]

저는 Ubuntu 18을 사용하고 있으며 Linux 명령에 대한 경험이 거의 없습니다. 두 개의 파일이 있습니다.

파일 1:

a,txt1,v1
b,txt2,v2
c,txt3,v1
d,txt4,v2

파일 2:

a,txt5,v2
b,txt6,v1
c,txt7,v1
d,txt8,v2

첫 번째 열의 값은 같고 세 번째 열의 값이 에서 로 변경된 첫 번째 열과 세 번째 열의 값을 인쇄하고 v1싶습니다 v2. 따라서 내 예상 결과는 다음과 같습니다.

a

v2두 번째 쿼리는 에서 로 변경된 세 번째 열 값에 대한 것입니다 v1. 그래서 내 예상 결과는 다음과 같습니다.

b

답변1

$ join -t, file1 file2 | awk -F, '$3 == "v1" && $5 == "v2" { print $1 }'
a

$ join -t, file1 file2 | awk -F, '$3 == "v2" && $5 == "v1" { print $1 }'
b

이는 두 파일이 모두 정렬되어 있다고 가정합니다. 그렇지 않은 경우

join -t, <( sort file1 ) <( sort file2 ) | awk ...as above...

join명령은

a,txt1,v1,txt5,v2
b,txt2,v2,txt6,v1
c,txt3,v1,txt7,v1
d,txt4,v2,txt8,v2

이는 첫 번째 열을 조인 키로 사용하여 두 파일 간의 관계형 조인의 결과입니다. 여기에는 동일한 조인 키를 가진 두 파일의 행과 각 파일의 다른 필드가 나열됩니다.

awk코드는 이를 보고 3열과 5열에 우리가 찾고 있는 값이 있는 경우에만 첫 번째 열을 인쇄합니다.

관련 정보