在 awk 中每 n 行插入输入文件中的行

在 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

我最初的尝试涉及为每三行创建单独的文件,但我的数据集非常大,因此我对节省硬盘空间感兴趣。

答案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

相关内容