输入文件 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
我最初的尝试涉及为每三行创建单独的文件,但我的数据集非常大,因此我对节省硬盘空间感兴趣。
答案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