我想使用sed。
在部分匹配字符串的所有实例之前附加一个字符串换句话说就像
LINE ONE OF FILE
LINE TWO OF FILE
我想在包含LINE
的每一行之前添加NEWLINE所以它看起来像这样
NEWLINE
LINE ONE OF FILE
NEWLINE
LINE TWO OF FILE
我有:
sed 's/.*$string1.*/$string2\n&/' $file_name
我想将$string2
放在$string1
$file_name
的每一行的上方
答案 0 :(得分:1)
$ string1=LINE
$ string2=NEWLINE
$ sed "s/.*$string1/$string2\n&/" file
NEWLINE
LINE ONE OF FILE
NEWLINE
LINE TWO OF FILE
您必须小心检查string1
和string2
,以确保它们不会无意中包含任何未转义的sed-active字符。
/
如果字符串包含/
,我们需要更改替换命令的形式。例如:
$ string1=LINE
$ string2=NEW/LINE
$ sed "s|.*$string1|$string2\n&|" file
NEW/LINE
LINE ONE OF FILE
NEW/LINE
LINE TWO OF FILE
答案 1 :(得分:1)
sed拥有的命令多于s///
sed '/LINE/ i NEWLINE'
对于任何匹配LINE的行,i
插入新文本。