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">

"자막[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>

등...

나는 다음과 같은 것을 시도하고 있습니다 :

cat demo.xml | sed 's/xml:id="subtitle[0-9]">/<span style="style0"><p/g'

하지만 이것은바꾸다xml:id="subtitle[0-9]"> 및 subtitle0부터 subtile9까지만

저는 모든 sed 및 정규 표현식 관련 내용을 처음 접했습니다. 다른 것이 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>

관련 정보