在第一场比赛之前插入Sed

时间:2013-11-20 11:07:53

标签: linux bash sed

我想在文件中的第一个“< p”之前在html中插入一个字符串,但是我遇到了一些困难。

thestring="<p>this is some sentence</p>"
sed -i "/<p/i${thestring}" somefile.html

“somefile.html”但是包含多行包含“&lt; p”,并且上面多次插入字符串。

我试过这样做:

sed -i "0,/<p/i${thestring}" somefile.html

sed -i "0,/<p/s//i${thestring}" somefile.html

但我没有在哪里。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

你可以考虑两件事:

1)使用s/.../.../代替i

2)thestring中的特殊字符会与sed的s分隔符冲突。在您的示例中,/p>

中的斜杠

这应该可以满足您的需求:

 sed  -i "0,/<p/ s_^_$thestring\n&_" file

答案 1 :(得分:0)

echo "${thestring}" | sed s'@<p>this is@blah blah <p>this is@'

如果您想获得“

”的特定实例,只需为搜索添加更多上下文。