이 내 꺼야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