簡體   English   中英

使用 sed 或正則表達式在分隔符上拆分后替換最后 n 個部分

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM