我有一个包含许多分隔符的字符串,例如:
efgh-foobar.extension-efgh(分隔符“-”)
我要删除

    - foobar.extension

到目前为止,我已经做到了
    a='abcd - efgh - foobar.extension'
    b=`echo $a | rev | cut -d'-' -f 1 | rev`
    echo $b

但这没用,因为回声
    foobar.extension

我希望能够在找到最终分隔符('-')之前保留初始部分。

最佳答案

在bash中,可以使用此内置字符串操作:

a='abcd - efgh - foobar.extension'
echo "${a% -*}"
abcd - efgh

"${a% -*}"将从字符串末尾删除$a的任何部分,该部分以空格开头,后跟-
或使用sed
sed 's/ *- *[^-]*$//' <<< "$a"
abcd - efgh

关于regex - 使用cut删除直到结束定界符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33136897/

10-11 01:29