我正在尝试使用 sed 将字符串插入多行,但没有得到所需的结果
我有这个:
<p begin="540960420t" end="600189590t" xml:id="subtitle8">-Some text.<br/>-Some more text</p>
<p begin="601020420t" end="653572920t" xml:id="subtitle9">-Something else<br/>Some more text</p>
<p begin="654403750t" end="731560830t" xml:id="subtitle10">More words<br/>-more text</p>
<p begin="732401670t" end="786625840t" xml:id="subtitle11">Some text.<br/>Some more text</p>
我需要插入这个
<span style="style0">
在“subtitle[0-200]">之前,它会是这样的:
<p begin="540960420t" end="600189590t" xml:id="subtitle8"><span style="style0">-Some text.<br/>-Some more text</p>
<p begin="601020420t" end="653572920t" xml:id="subtitle9"><span style="style0">-Some text.<br/>Some more text</p>
ETC...
我正在尝试这样的事情:
cat demo.xml | sed 's/xml:id="subtitle[0-9]">/<span style="style0"><p/g'
但是这个取代xml:id="subtitle[0-9]"> 并且仅从 subtitle0 到 subtile9
我对所有 sed 和 regexp 的事情都很陌生,如果其他东西应该比 sed 更容易,那就没问题了..
最好的问候索伦
答案1
你可以做:
sed 's/subtitle[0-9]\{1,3\}">/&<span style="style0">/'
这通过使用 匹配 1 到 3 位数字来匹配副标题[0-200],\{1,3\}
并将其替换为添加的匹配模式<span style...
。
如果您输入:
<p begin="540960420t" end="600189590t" xml:id="subtitle8">-Some text.<br/>-Some more text</p>
<p begin="601020420t" end="653572920t" xml:id="subtitle9">-Something else<br/>Some more text</p>
<p begin="654403750t" end="731560830t" xml:id="subtitle10">More words<br/>-more text</p>
<p begin="732401670t" end="786625840t" xml:id="subtitle11">Some text.<br/>Some more text</p>
这将输出
<p begin="540960420t" end="600189590t" xml:id="subtitle8"><span style="style0">-Some text.<br/>-Some more text</p>
<p begin="601020420t" end="653572920t" xml:id="subtitle9"><span style="style0">-Something else<br/>Some more text</p>
<p begin="654403750t" end="731560830t" xml:id="subtitle10"><span style="style0">More words<br/>-more text</p>
<p begin="732401670t" end="786625840t" xml:id="subtitle11"><span style="style0">Some text.<br/>Some more text</p>
答案2
如果所有行都如您所显示的那样,您所需要做的就是>
在每行的第一个字符串之后输入新字符串:
$ sed 's/>/><span style="style0">/' file
<p begin="540960420t" end="600189590t" xml:id="subtitle8"><span style="style0">-Some text.<br/>-Some more text</p>
<p begin="601020420t" end="653572920t" xml:id="subtitle9"><span style="style0">-Something else<br/>Some more text</p>
<p begin="654403750t" end="731560830t" xml:id="subtitle10"><span style="style0">More words<br/>-more text</p>
<p begin="732401670t" end="786625840t" xml:id="subtitle11"><span style="style0">Some text.<br/>Some more text</p>