用sed找到第一句话

时间:2015-12-11 13:13:31

标签: regex bash sed

我试图在<p>标记内找到第一句话。我认为句子以第一个&#34; final&#34;结束。点,即当它进入&#34;点空间大写&#34;,以跳过缩写。

echo "<p>this will def. fail. So. Sad.</p>" | sed -r -e "s/<p>(([^\.]*\. [^A-Z])*[^\.]*\.) [A-Z]/\1/g"

预期结果是this will def. fail.,我尝试用\ 1

捕获

它适用于regex101,但与终端上的sed一起使用时返回this will def. fail.o. Sad.</p>

1 个答案:

答案 0 :(得分:0)

您需要.*来抓住其余部分:

echo "<p>this will def. fail. So. Sad.</p>" |
   LANG=C sed -r -e "s/<p>(([^\.]*\. [^A-Z])*[^\.]*\.) [A-Z].*/\1/g"
#  ^ huh?                                                   ^^
this will def. fail.

这是一个小问题。

令我头疼的是,在那次修复后它仍然无法正常工作。实际上需要进行一些调查才能发现在我的平台上我需要set the locales。我想你有同样的问题。