Bash得到最后一句话



假设,我们得到了以下包含字符串的变量:

text="All of this is one line. But it consists of multiple sentences. Those are separated by dots. I'd like to get this sentence."

我现在需要最后一句话"我想得到这句话。我尝试使用 sed:

echo "$text" | sed 's/.*.*.//'

我以为它会删除所有内容,直到模式.*..其实不然。

这里有什么问题?我相信这可以很快解决,不幸的是我没有找到任何解决方案。

使用 awk 你可以做到:

awk -F '\. *' '{print $(NF-1) "."}' <<< "$text"
I'd like to get this sentence.

使用 sed:

sed -E 's/.*.([^.]+.)$/1/' <<< "$text"
 I'd like to get this sentence.

不要忘记内置的

echo "${text##*. }"

这需要在句号后留出一个空格,但如果您不想这样做,则模式很容易适应。

至于你失败的尝试,正则表达式看起来不错,但很奇怪。模式.*.查找零个或多个文字句点,后跟一个文字句点,即实际上是一个或多个句点字符。

相关内容

  • 没有找到相关文章

最新更新