Search code examples
bashsedcut

Delete everyting preceding and including a certain substring from variable


In Bash, how can I delete characters from a variable until a certain substring?

Example:

ananas1kiwi2apple1banana2tree

shall look like this:

apple1banana2tree

The substring in this case is 2.


Solution

  • If you want to remove the substring upto 2, using bash parameter expansion:

    ${var#*2}
    
    • # does non-greedy match from left, use ## for greediness

    • #*2 matches and discards upto first 2 from variable var

    Example:

    $ var='ananas1kiwi2apple1banana2tree'
    $ echo "${var#*2}"
    apple1banana2tree