sed -n 'H;${x;s/^\n//;s/hello line 2/hello new line\n&/;p;}' test.txt > test.txt.2
输出文件test.txt.2
hello line 1
hello new line
hello line 2
hello line 3
注意!sed的开头是一个没有空格的换行符替换--这是必要的,否则生成的文件将在开头有一个空行 脚本找到包含“hello line 2”的行,然后在上面插入一个新行--“hello new line” sed命令说明:
sed -n:
suppress automatic printing of pattern space
H;${x;s/test/next/;p}
/<pattern>/ search for a <pattern>
${} do this 'block' of code
H put the pattern match in the hold space
s/ substitute test for next everywhere in the space
x swap the hold with the pattern space
p Print the current pattern hold space.
5条答案
按热度按时间o4tp2gmn1#
您可以编写sed脚本文件并用途:
或者,您可以使用(多个)
-e 'command'
选项:如果要在一行之后追加内容,则:
b91juud32#
我假设您只想在当前行号大于某个值时在模式之前插入行(即如果模式出现在行号之前,则不执行任何操作)
如果您未绑定到
sed
:2exbekwf3#
下面是一个如何在文件中一行之前插入一行的示例:
示例文件test.txt:
脚本:
输出文件test.txt.2
注意!sed的开头是一个没有空格的换行符替换--这是必要的,否则生成的文件将在开头有一个空行
脚本找到包含“hello line 2”的行,然后在上面插入一个新行--“hello new line”
sed命令说明:
brjng4g34#
简单?从第12行到最后:
lsmd5eda5#
在匹配行之前插入一行:
输出量:
在匹配行后插入一行:
输出量: