sed -i 以相反的顺序写入!为什么?

Ton*_*son 3 sed shell-script

为什么 sed 以相反的顺序写入我的文件?


我需要读取old_file.txt包含以下数据的文本文件 ( ):

文件中有什么old_file.txt

1.00
2.00
3.00
Run Code Online (Sandbox Code Playgroud)

我有第二个文件,其中包含:

文件中有什么new_file.txt

AAAA
BBBB
CCCC
DDDD
EEEE
FFFF
GGGG
Run Code Online (Sandbox Code Playgroud)

现在,我需要将光标移动到nthfile 所在的行new_file.txt,并插入 中的所有内容old_file.txt,如下所示:

我需要的:

AAAA
BBBB
CCCC
1.00  <-- 
2.00  <-- 
3.00  <--
DDDD
EEEE
FFFF
GGGG
Run Code Online (Sandbox Code Playgroud)

但我得到:

我得到的:

AAAA
BBBB
CCCC
3.00  <--
2.00  <--
1.00  <--
DDDD
EEEE
FFFF
GGGG
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

1.00
2.00
3.00
Run Code Online (Sandbox Code Playgroud)

我不知道为什么写作会以相反的顺序发生!

ste*_*ver 15

发生这种情况是因为您的循环1.00CCCC之后追加,然后在之后追加,然后2.00CCCC之后追加。3.00CCCC

为了得到你想要的顺序,你可以代替nsert$x之前的(N + 1)行-但是你没有,如果你需要使用一个shell循环在这里所有的[R EAD直接从文件:

sed -i "${line}"'r old_file.txt' new_file.txt
Run Code Online (Sandbox Code Playgroud)