使用sed在文件之前将文件内容插入文件

St3*_*3an 6 regex sed

我是新手sed,我试图将一个BFile的内容插入文件AFile,在一个模式之前(在AFile中)

以下是我尝试过的:

sed -i '/blah Blah/r BFile' AFile :它在AFile中插入模式后的BFile内容.

sed -i '/blah Blah/i BFile' AFile:它在AFile中的模式之前插入字符串 'BFile'.

......嗯

我意识到这是因为正则表达式的或错误理解的sed:我不明白是怎么/i/r在这里工作......我无法找到任何帮助sed --help

谁理解我的观点?

问候,

斯坦

pot*_*ong 8

这可能适合你(GNU sed):

sed $'/blah Blah/{e cat Bfile\n}' AFile
Run Code Online (Sandbox Code Playgroud)

要么:

sed -e 'N;/\n.*blah Blah/{r Bfile' -e '};P;D' AFile
Run Code Online (Sandbox Code Playgroud)

  • @NeronLeVelu这是一个GNU sed特定命令,参见[here](http://www.gnu.org/software/sed/manual/sed.html#Extended-Commands) (2认同)

kev*_*kev 5

内容AFile

one
two
three
blah Blah
four
Run Code Online (Sandbox Code Playgroud)

内容BFile

...b...
Run Code Online (Sandbox Code Playgroud)

运行这些命令

# get line number
$ sed -n '/blah Blah/=' AFile
4

# read file just before that line
$ sed '3r BFile' AFile
one
two
three
...b...
blah Blah
four
Run Code Online (Sandbox Code Playgroud)


小智 5

sed 的 r 命令不会更改模式空间。文件的内容在当前周期结束时或在读取下一个输入行 (info sed) 时打印,因此以下命令中的 N

sed '/blah Blah/ {
r Bfile
N
}' Afile
Run Code Online (Sandbox Code Playgroud)