Ответ 1
Чтобы ответить на заголовок вашего вопроса, указав сокращение последнего n символа в строке, вы можете использовать функцию извлечения подстроки в Bash.
[email protected]$ A="123456"
[email protected]$ echo ${A:0:-2} # remove last 2 chars
1234
Однако на основе ваших примеров вы хотите удалить все конечные запятые, и в этом случае вы можете использовать sed 's/,*$//'
.
[email protected]$ echo "ssl01:49188,ssl999999:49188,,,,," | sed 's/,*$//'
ssl01:49188,ssl999999:49188
или, для чисто решения Bash, вы можете использовать удаление подстроки:
[email protected]$ X="ssl01:49188,ssl999999:49188,,,,,"
[email protected]$ shopt -s extglob
[email protected]$ echo ${X%%+(,)}
ssl01:49188,ssl999999:49188
Я бы использовал подход sed
, если преобразование должно быть применено к целому файлу, и подход удаления подстроки Bash, если целевая строка уже находится в переменной Bash.