如何在sed中使用贪心方法替换文本?

时间:2013-01-17 06:38:37

标签: sed greedy

我正在解析一个带有一些html标签并更改为latex标签的文件。

cat text

  <Text>A &lt;strong&gt;ASDFF&lt;/strong&gt; is a &lt;em&gt;cerebrovafdfasfscular&lt;/em&gt; condifasdftion caufadfsed fasdfby tfdashe l
 ocfsdafalised &lt;span style="text-decoration: underline;"&gt;ballooning&lt;/span&gt; or difdaslation of an arfdatery in thdfe bfdasrai
 n. Smadfsall aasdneurysms may dadisplay fdasno ofadsbvious sdfasigns (&lt;span style="text-decoration: underline;"&gt;&lt;em&gt;&lt;str
 ong&gt;asymptomatic&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;) bfdasut lfdsaarger afdasneurysms maydas besda asfdsasociated widfth sdsfudd

  sed -e 's|&lt;strong&gt;\(.*\)&lt;/strong&gt;|\\textbf{\1}|g' test

cat out

 <Text>A \textbf{ASDFF&lt;/strong&gt; is a &lt;em&gt;cerebrovafdfasfscular&lt;/em&gt;    condifasdftion caufadfsed fasdfby tfdashe locfsda
    falised &lt;span style="text-decoration: underline;"&gt;ballooning&lt;/span&gt; or    difdaslation of an arfdatery in thdfe bfdasrain. Sma
      dfsall aasdneurysms may dadisplay fdasno ofadsbvious sdfasigns (&lt;span style="text-decoration: underline;"&gt;&lt;em&gt;&lt;strong&gt
      ;asymptomatic}&lt;/em&gt;&lt;/span&gt;) bfdasut lfdsaarger afdasneurysms maydas besda   asfdsasociated widfth sdsfudd

当我观察\ textbf {ASDFF .........}时,预期输出应为\ textbf {ASDFF}。如何获得预期的结果?

问候

1 个答案:

答案 0 :(得分:2)

您可能希望使用perl正则表达式。

perl -pe  's|&lt;strong&gt;(.*?)&lt;/strong&gt;|\\textbf{\1}|g'

您的问题与non-greedy-regex-matching-in-sed类似。下次你可能想简化你的案例来指出真正的问题。例如,不要只粘贴原始的html代码,而是使用它:

fooTEXT1barfooTEXT2bar

<强>更新

如果你只是想要贪婪的方法,那就忽略它。