두 파일의 세 열 비교

두 파일의 세 열 비교

비슷한 열과 고유한 열이 있는 두 개의 파일이 있습니다. 비슷한 내용의 처음 3개 열을 비교하고 일치하는지 여부와 각각 고유한 열을 인쇄하고 싶습니다.

파일 1:

A cat pizza 34 24 56 
A dog tomato 304 959 030
B bird grape 4.4 939 33
C snake broccoli 89 28 273 

파일 2:

A cat pizza 55 85 328
B dog tomato 404 56 32
C snake sandwich 384 34 75

사용해야 할 것

파일 3:

A cat pizza 34 24 56 55 85 328

나는 노력해왔다

awk  'NR==FNR       {c[$1$2$3]++;next}
      c[$1$2$3] > 0 {print $0}'

하지만 일치하는 항목이 없습니다.

답변1

나는 다음과 같은 것을 할 것입니다

function join(start, end, sep,       str, i) {
    if (!sep) sep = OFS
    str = $start
    for (i = start + 1; i <= end; i++) str = str sep $i
    return str
}
 
          { key = $1 OFS $2 OFS $3 }
NR == FNR { f1[key] = join(4, NF); next }
key in f1 { print key, f1[key], join(4, NF) }

다음으로 실행

awk -f script.awk file1 file2

관련 정보