我有一个包含许多分隔符的字符串,如:
abcd - efgh - foobar.extension(Delimiter' - ')
我想删除
- foobar.extension
到目前为止,我已经完成了
a='abcd - efgh - foobar.extension'
b=`echo $a | rev | cut -d'-' -f 1 | rev`
echo $b
但这并没有帮助,因为它回应了
foobar.extension
我希望能够在找到最终分隔符(' - ')之前保留初始部分。
答案 0 :(得分:2)
在bash中,您可以使用此内置字符串操作:
a='abcd - efgh - foobar.extension'
echo "${a% -*}"
abcd - efgh
"${a% -*}"
将从字符串末尾删除以$a
开头的-
开头的任何部分。
或使用sed
:
sed 's/ *- *[^-]*$//' <<< "$a"
abcd - efgh
答案 1 :(得分:0)
您可以使用cut
选择一系列字段:
$ echo 'abcd - efgh - foobar.extension' | cut -d'-' -f -2
abcd - efgh
在这里,-f -2
选择第二个字段之前的所有字段(包括第二个字段),这会切断第二个分隔符之后的所有字段。