2013-03-13 4 views
1

두 파일이 있는데 두 파일에서 필요한 열을 가져 와서 병합해야합니다. 나는 이것을하기 위해 awk를 사용하고 싶다.Awk : 파일의 열 병합

그래서 FileB에서 $ 9 -> $ 12가 필요합니다. FileA의 $ 4가 FileB의 $ 12에있는 내용과 일치하면 FileA에서 $ 1, $ 2, $ 3, $ 5 및 $ 6이 필요합니다.

script.awk :

FNR==NR { 
    blah = $12 
    gsub(/"/,"",blah); gsub(/;/,"",blah); 
    array[blah]=$9,$10,$11,$12 ## This breaks here 
    next 
} 

{ 
    if ($4 in array) { 
     print $1,"TransMap","Tcon",$2,$3,$5,$6,".",array[$4] 
    } 
} 

내가 실행하는 것 같은 : AWK -f script.awk fileB FILEA 그래서 알 FileB의 ISN의 $ 12와 '여기

내가 지금까지 가지고 무엇을 정확한 일치 - $ 4와 일치하는 항목은 "$ 4"형식입니다. (따라서 gsubs). 최종 출력물에 $ 4에있는 것과는 반대로이 형식이 필요합니다. 그래서이 방법을 사용했습니다.

배열 [blah] = $ 9, $ 10 ... 줄 바꿈은 awk (분명히)입니다. 하지만 FileB에서 나온 4 개의 필드가 모두 필요합니다. 어떻게 해결할 수 있습니까? awk에 대한 온라인 지침은 분명하지 않았습니다.

답변

1

내가 데이터를 보지 않고 문제를 추측 만

array[blah]=$9","$10","$11","$12 

을 시도합니다. 나는 쉼표로 연결된 9-12 달러를 얻고 싶습니다.

+0

Perfect. 감사! – Joe