awk를 통해 두 파일을 병합하는 방법

awk를 통해 두 파일을 병합하는 방법

이 내 꺼야1.file

             id
             a1
             a2
             a3
             a4

이 내 꺼야2.file

             DW  1  2  3  4
             KD  2  3  4  5
             LBJ 4  4  4  4

최종 파일을 받고 싶습니다.

             id  a1 a2 a3 a4
             DW  1  2  3  4
             KD  2  3  4  5
             LBJ 4  4  4  4
            

나는 노력한다

cat 1.file |tr "\n" "\t"|sed -e 's/,$/\n/'

그런 다음

cat 1.file 2.file >> fina.file

awk하지만 난 방법을 찾고 싶어

답변1

$ column -t <( paste -s 1.file ) 2.file
id   a1  a2  a3  a4
DW   1   2   3   4
KD   2   3   4   5
LBJ  4   4   4   4

행은 1.file단일 행 헤더로 변환된 paste -s다음 column -t해당 헤더를 의 데이터와 정렬하는 데 사용됩니다 2.file.

위의 내용은 프로세스 대체를 이해하는 쉘을 사용하고 있다고 가정합니다 <(...). 그렇지 않은 경우 대신 다음을 사용하십시오.

paste -s 1.file | column -t /dev/stdin 2.file

답변2

I want to get the awk way하나의 awk 스크립트에서 모든 작업을 수행하는 방법을 배우고 싶다고 가정합니다 .

$ awk 'NR==FNR{ hdr=hdr sep $0; sep=OFS; next} FNR==1{ print hdr } 1' 1.file 2.file
id a1 a2 a3 a4
DW  1  2  3  4
KD  2  3  4  5
LBJ 4  4  4  4

답변3

다음과 같은 작업이 수행됩니다.

awk '{ORS=(NR%5?FS:RS)}1' 1.file >final.file
cat 2.file >>final.file

awk코드는 연속된 5줄을 한 줄로 인쇄합니다. 그런 다음 cat나머지 파일을 추가하십시오.

답변4

들여쓰기 유지:

cat <( fmt 1.file ) 2.file
             id a1 a2 a3 a4
             DW  1  2  3  4
             KD  2  3  4  5
             LBJ 4  4  4  4

관련 정보