21

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.

oguz ismail
  • 1
  • 16
  • 47
  • 69
Anne K.
  • 345
  • 2
  • 4
  • 7

2 Answers2

39

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
heemayl
  • 39,294
  • 7
  • 70
  • 76
6

Using pure bash shell parameter expansion.

$ string="ananas1kiwi2apple1banana2tree"
$ newString="${string#*2}"
$ printf "%s\n" "$newString"
apple1banana2tree
Jonathan Leffler
  • 730,956
  • 141
  • 904
  • 1,278
Inian
  • 80,270
  • 14
  • 142
  • 161