How to delete everything in a string after a specific character?

后端 未结 3 345
面向向阳花
面向向阳花 2021-02-04 07:15

Example:

    before: text_before_specific_character(specific_character)text_to_be_deleted
    after: text_before_specific_character

I know that

3条回答
  •  醉话见心
    2021-02-04 07:50

    If TEXT contains your text, as in

    TEXT=beforexafter
    

    and the specific character happens (for example) to be x, then

    echo "${TEXT%x*}"
    

    does what you want.

    To Bash, "$TEXT" or "${TEXT}" is the whole beforexafter, but "${TEXT%xafter}" is just before, with the xafter chopped off the end. To chop off the x and anything that might follow it, one writes "${TEXT%x*}".

    There is also "${TEXT%%x*}", incidentally. This differs from the other only if there is more than one x. With the %%, Bash chops off all x, whereas with the % it chops off only from the last x. You can remember this by observing loosely that the longer %% chops off more text.

    You can do likewise with Sed, of course, if you prefer:

    echo "$TEXT" | sed 's/x.*//'
    

提交回复
热议问题