Awk
在 awk 中每 n 行從輸入文件中插入行
輸入文件 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
我想每 3 行文件 B 插入一行文件 A,從第一行開始是文件 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
我最初的嘗試涉及為每三行創建單獨的文件,但我的數據集非常大,所以我對節省硬碟空間很感興趣。
如果您不需要使用 awk,粘貼可以工作:
$ paste -d '\n' <fileB fileA - - - | tr -s '\n' >fileC
該
tr
部分不是絕對必要的,因此如果您不介意額外的換行符,可以將其刪除。
聽起來像是一個很好的案例
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