我是新手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
谁理解我的观点?
问候,
斯坦
这可能适合你(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)
AFileone
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)