Sed 在图案后插入新行
我有包含以下行的脚本:Sed 在图案后插入新行,sed,Sed,我有包含以下行的脚本: echo + /etc>>$BUFFER 我想用sed编辑它们,并在此之后插入另一行: echo + /etc>>$BUFFER echo - /etc/cache>>$BUFFER 并保持文件的其余部分不变。SED regexp是如何做到这一点的?如果我理解正确,这应该可以: sed 's/echo \+ .*etc>>\$BUFFER/echo + \/etc>>\$BUFFER\
echo + /etc>>$BUFFER
我想用sed编辑它们,并在此之后插入另一行:
echo + /etc>>$BUFFER
echo - /etc/cache>>$BUFFER
并保持文件的其余部分不变。SED regexp是如何做到这一点的?如果我理解正确,这应该可以:
sed 's/echo \+ .*etc>>\$BUFFER/echo + \/etc>>\$BUFFER\necho - \/etc\/cache>>\$BUFFER/'
这也许不是最好的解决方案(我不确定如何处理模式中的正斜杠-理论上它应该足以避免它,就像:\/
但奇怪的是它不起作用)不过这应该行得通
sed -i '$a echo - /etc/cache>>$BUFFER' myfile.txt
$表示最后一行,a表示附加-i选项将文件写入到位
如果你想在任何地方找到匹配项,你可以用一个正则表达式//像这样解决它,只要确保转义/like/就行了,因为sed希望正则表达式封装在//中
sed-i'/echo+\/etc>>$BUFFER/a echo-/etc/cache>>$BUFFER'myfile.txt
sed -i '\#^ *echo + /etc>>\$BUFFER *$# a\
echo - /etc/cache>>$BUFFER' YourFile
由于上述语句的(复制和粘贴)省略了第一个+符号之前的空格(可能是因为运行此网站帖子的软件中存在错误)-以下是复制时应能正常工作的版本:
sed-i'/echo\+\/etc>>$BUFFER/a echo-/etc/cache>>$BUFFER'myfile.txt
sed -i '\#^ *echo + /etc>>\$BUFFER *$# a\
echo - /etc/cache>>$BUFFER' YourFile
或者,如果你想避免在将来逃过一个前斜杠(在这种情况下不是很有用,因为它只有一个,但是如果你有很多前斜杠-同样奇怪的逃过的空间只是由于这个网站(或我的浏览器firefox)的软件中的一个BUG)如果在命令行中键入,则可以将间距设置为提问者问题中显示的两倍):
sed-i'\@echo\+/etc>>$BUFFER@aecho-/etc/cache>>$BUFFER'myfile.txt
sed -i '\#^ *echo + /etc>>\$BUFFER *$# a\
echo - /etc/cache>>$BUFFER' YourFile
- 它将在每次出现
后添加行echo+/etc>>$BUFFER
- 我只是添加了行分隔符,以限制仅限于此确切的行内容(但可以有标题或尾随空格)
a
命令的副本。查看@fedorqui的dup,直到有足够多的人将其关闭。如果您(复制并粘贴)文本,则最后一条语句(输入并显示)正确,它在+号之前缺少空格,可能是由于博客软件中的错误。