Удаление символов без печати из переменной bash
У меня есть переменная $a
. Эта переменная имеет непечатаемые символы (возврат каретки ^ M).
>echo $a
some words for compgen
>a+="END"
>echo $a
ENDe words for compgen
Как я могу удалить этот char?
Я знаю, что echo "$a"
отображает его правильно. Но это не решение в моем случае.
Ответы
Ответ 1
Вы можете использовать tr
:
tr -dc '[[:print:]]' <<< "$var"
удалит непечатаемый символ из $var
.
$ foo=$'abc\rdef'
$ echo "$foo"
def
$ tr -dc '[[:print:]]' <<< "$foo"
abcdef
$ foo=$(tr -dc '[[:print:]]' <<< "$foo")
$ echo "$foo"
abcdef
Ответ 2
Чтобы удалить только возвращаемый возврат каретки из a
, используйте
a=${a%$'\r'}