使用 sed 插入字符串的中间

使用 sed 插入字符串的中间

我正在尝试使用 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>

相关内容