How can I remove the last n characters from a particular string using shell script?
This is my input:
ssl01:49188,,,
ssl01:49188,
ssl01:49188,,,,,
ssl01:49188,ssl999999:49188,,,,,
ssl01:49188,abcf999:49188,,,,,
The output should be in the following format:
ssl01:49188
ssl01:49188
ssl01:49188
ssl01:49188,ssl999999:49188
ssl01:49188,abcf999:49188
To answer the first line of your question which asks to "remove the last n characters from a string", you can use the substring extraction feature in Bash:
A="123456"
echo ${A:0:-2} # remove last 2 chars
1234
However, based on your examples you appear to want to remove all trailing commas, in which case you could use sed 's/,*$//'
.
echo "ssl01:49188,ssl999999:49188,,,,," | sed 's/,*$//'
ssl01:49188,ssl999999:49188
or, for a purely Bash solution, you could use substring removal:
X="ssl01:49188,ssl999999:49188,,,,,"
shopt -s extglob
echo ${X%%+(,)}
ssl01:49188,ssl999999:49188
I would use the sed approach if the transformation needs to be applied to a whole file, and the bash substring removal approach if the target string is already in a bash variable.