I have a bash variable that ends with \r\n:
$ # Not the real command to get VAR's value, just an example
$ VAR="$(echo -en 'hello\r\n')"
$ hexdump -C <<< "$VAR"
00000000 68 65 6c 6c 6f 0d 0a |hello..|
00000007
I would like to drop the \r (the \n itself is correctly handled by bash).
I may trim it (VAR="$(tr -d '\r' <<< "$VAR")"), but that implies to run a process just for that task.
I tried using "Remove matching suffix pattern" bash feature, but cannot find which pattern to use (e.g., ${VAR%\r}, ${VAR%\x0d}, ${VAR%[\r]}—but neither of them does work).
Any idea how to drop the \r without creating a subprocess?
Use the ANSI C quotes. With substitution, use
var=${var//$'\r'}
If you want to only remove the \r before the final \n, you can use
var=${var%$'\r\n'}$'\n'
i.e. you have to remove both the \r and \n, so you need to add the \n back.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With