sed如何替换以多字符定界符结尾的复杂字符串的首次出现?

时间:2019-06-30 19:38:40

标签: regex sed delimiter

我有一长串的文本和html标签。我希望使用sed将字符串之间的字符替换为值' MYSTART ',直到起始字符串之后的# df.query("col1.str.startswith('m')") # Out: # col1 col2 # 1 many many 第一次出现。替换文字为 RESULTSAFTERSUBSTITITWORKS

我一直在用正则表达式摸索和摸索,并不断撞墙。我还尝试了一些正则表达式测试站点,但无论是否使用'-r',它们报告的成功对我来说都行不通。

</p>

我的示例字符串如下所示:

cat myfile | sed -r 's/MYSTART.*?<\/p>/RESULTAFTERSUBSTITUTIONWORKS/'

替换后,它看起来像这样:

THISSHOULDBEIGNORED_MYSTART<ac>blah</ac><another>lots of things 123 abc :</another></p><div><ac>another thing</another><p>welcome home to somewhere</p></div>the line keeps going and going</p><p>paragraph</p>

1 个答案:

答案 0 :(得分:1)

使用任何将std::ios_base::sync_with_stdio(false)识别为\n的sed:

<newline>

如果您可以在起始字符串之前放置$ sed 's:</p>:\n:; s/MYSTART.*\n/RESULTAFTERSUBSTITUTIONWORKS/' file THISSHOULDBEIGNORED_RESULTAFTERSUBSTITUTIONWORKS<div><ac>another thing</another><p>welcome home to somewhere</p></div>the line keeps going and going</p><p>paragraph</p> ,则更可能是这样(未经测试):

</p>