我有一个包含许多分隔符的字符串,例如:
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/