[英]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.