두개의 파일로 부터 filed 를 합치는 명령어에 관하여...

pshun의 이미지

자주 이곳에 scrip 관련 질문을 올려 도움을 받는 초보자입니다.
예를 들어 두개의 파일이 있다고 치고 하나의 파일의 첫번째 필드와 두번째 파일의 두번째 필드를 합쳐서 새로운 파일의 첫번째, 두번째 필드 이렇게 합치고자 합니다.
awk문을 이용하면 되지 않을까 하여 시도해보았으나 잘안되는것 같습니다. 첫번째 필드를 배열로 저장할수만 있어도 가능할것 같은데 방법이 없을까요?

awk '{value[x++]=$1}' a1.txt ; awk '{value2[x++]=$2};END{for(i=0;i<NR;i++) print i, value[i],value2[i]}' b1.txt > c1.txt

참고로 a1.txt 파일과 b1.txt파일의 레코드 수는 같습니다..

익명 사용자의 이미지

스크립트 하나 짜서 아래와 같이 하면 될거 같은데...
awk '{print $1}' a1.txt > a.tmp
awk '{print $2}' b1.txt > b.tmp
paste a.tmp b.tmp > c1.txt

익명 사용자의 이미지

코딱지 wrote:
스크립트 하나 짜서 아래와 같이 하면 될거 같은데...
awk '{print $1}' a1.txt > a.tmp
awk '{print $2}' b1.txt > b.tmp
paste a.tmp b.tmp > c1.txt

한단계 줄이면 ^^;;

awk '{print $1}' a1.txt >a.tmp
awk '{print $2}' b1.txt | paste a.tmp - >c1.txt
alfalf의 이미지

bash라면 아래 코드가 작동할 겁니다.

paste <(awk '{print $1}' a1.txt) <(awk '{print $2}' b1.txt) > c1.txt

근데, 먼저 paste를 하고 다음에 'awk'나 'cut'으로 원하는 column들을 뽑아내는건 어떨까요?