sed - 在模式之前插入一行

Tom*_*myQ 1 sed

我想使用 sed 在模式之前插入一行: - Insert 'XmlRootElement(name="ABC")' before "public class"

这是脚本:

'/public class/i\@XmlRootElement(name="ABC")'
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此命令时出现错误:

sed -e script testfile.txt
sed: -e expression #1, char 13: Unterminated `s' command
Run Code Online (Sandbox Code Playgroud)

谁能帮我?

谢谢

she*_*ter 5

对于我习惯的 sed,您必须在 后包含换行符i\,并用空行“终止”插入,即

sed '/public class/i\
@XmlRootElement(name="ABC")

' file > outFile
Run Code Online (Sandbox Code Playgroud)

请注意,新插入的文本后面有一个空行。

请注意,请确保在行尾、 后没有任何空格i\

我现在意识到,您将 sed 保存在单独的脚本文件中,格式限制也适用于此,只需删除''代码周围的对即可。

更重要的是,您的脚本失败了,因为您使用-esed 脚本文件,使用

sed -f script testfile.txt
Run Code Online (Sandbox Code Playgroud)

-e如果您内联嵌入 sed 脚本,则使用,我上面的第一个解决方案可以预先加上-e.

编辑a\对“i\”的固定引用。多阿

希望这可以帮助。