我有两个文件,我试图从 file1 的开头开始每隔 4 行将 file2 中的一行插入到 file1 中。例如:
文件1:
line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9
line 10
Run Code Online (Sandbox Code Playgroud)
文件2:
50
43
21
Run Code Online (Sandbox Code Playgroud)
我想要得到的输出:
50
line 1
line 2
line 3
line 4
43
line 5
line 6
line 7
line 8
21
line 9
line 10
Run Code Online (Sandbox Code Playgroud)
我的代码:
while read line
do
sed '0~4 s/$/$line/g' < file1.txt > file2.txt
done < file1.txt
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
sed: 1: "0~4 s/$/$line/g": invalid command code ~
Run Code Online (Sandbox Code Playgroud)
以下步骤遍历这两个文件,而不将其中任何一个加载到内存中的数组中:
awk '(NR-1)%4==0{getline this<"file2";print this} 1' file1
Run Code Online (Sandbox Code Playgroud)
file2如果您的实际值大于您想要保存在内存中的值,这可能会更好。
这细分如下:
(NR-1)%4==0- 匹配从 0 开始的每 4 行的条件getline this<"file2"- 从“file2”获取一行并将其存储在变量中thisprint this- 打印...这个。1- “打印当前行”的简写,在本例中来自 file1 (awk 的正常输入)