【发布时间】:2021-03-12 04:12:11
【问题描述】:
我需要用空格替换由分隔符分隔的字符串的最后 2 部分以清理名称。 示例:
something-useful-a12356-78929
=>
something-useful
something-more-useful-v35f62-2728902
=>
something-more-useful
我尝试了以下方法:
echo "something-useful-12345-67890" | sed -re 's/(-([0-9])+)//g'
如果我的最后两个分隔符元素仅为数字,则此方法有效,但不适用于上面的示例。在“-”上拆分后,我需要删除最后两个部分 我只能使用 sed 或 regex 来解决这个问题。
【问题讨论】:
-
是否总是需要替换的最后两个元素?如果是这样,那么
(?:-[^-]+){2}$可能吗? -
echo 'something-more-useful-v35f62-2728902' | sed -E 's/(.*)(-[^-]+){2}$/\1/'