![awk의 n 줄마다 입력 파일의 줄을 삽입하십시오.](https://linux55.com/image/130357/awk%EC%9D%98%20n%20%EC%A4%84%EB%A7%88%EB%8B%A4%20%EC%9E%85%EB%A0%A5%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EC%A4%84%EC%9D%84%20%EC%82%BD%EC%9E%85%ED%95%98%EC%8B%AD%EC%8B%9C%EC%98%A4..png)
입력 파일 A와 B는 다음과 같습니다.
파일 A
1 1 1
2 2 2
3 3 3
문서 B
10 10 10
20 20 20
30 30 30
40 40 40
50 50 50
60 60 60
70 70 70
파일 A의 첫 번째 줄부터 첫 번째 줄부터 시작하여 파일 B의 3줄마다 파일 A에 한 줄을 삽입하여 출력은 다음과 같습니다.
1 1 1
10 10 10
20 20 20
30 30 30
2 2 2
40 40 40
50 50 50
60 60 60
3 3 3
70 70 70
처음에는 세 행마다 별도의 파일을 생성하려고 했지만 데이터 세트가 매우 커서 하드 드라이브 공간을 절약하는 데 관심이 있었습니다.
답변1
awk를 사용할 필요가 없으면 붙여넣기를 사용할 수 있습니다.
$ paste -d '\n' <fileB fileA - - - | tr -s '\n' >fileC
이 tr
부분은 반드시 필요한 것은 아니므로 추가 줄바꿈이 마음에 들지 않으면 제거할 수 있습니다.
답변2
좋은 사례인 것 같습니다 getline
.
awk '(NR-1)%3 == 0 {getline line < "FileA"; print line} 1' FileB
1 1 1
10 10 10
20 20 20
30 30 30
2 2 2
40 40 40
50 50 50
60 60 60
3 3 3
70 70 70
답변3
GNU sed R
명령을 사용하십시오:
sed -e $'R fileb\nR fileb\nR fileb' filea > output