[英]replace last n parts after spliting on delimiter using sed or regex
我需要用空格替换由分隔符分隔的字符串的最后 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 或正则表达式来解决这个问题。
sed 's/\(-[^-]*\)\{2\}$//' file
是否符合您的要求?
使用[^-]
匹配除-
以外的任何内容。 使用$
匹配字符串的结尾。 匹配连字符,最后匹配非连字符两次。
sed -r 's/(-[^-]+){2}$//'
这可能对您有用(GNU sed):
sed -re 's/-[^-]*//2g' file
从第二次出现的-
后跟非-
字符中全局删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.