使用剪切删除直到结束的分隔符

时间:2015-10-14 22:43:08

标签: regex linux cut

我有一个包含许多分隔符的字符串,如:

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

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

2 个答案:

答案 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选择第二个字段之前的所有字段(包括第二个字段),这会切断第二个分隔符之后的所有字段。