我有一些变量$a。此变量包含非打印字符(回车符^M)。
>echo $a
some words for compgen
>a+="END"
>echo $a
ENDe words for compgen我怎样才能去掉那个字符?我知道echo "$a"显示它是正确的。但对我来说,这不是一个解决方案。
发布于 2014-02-27 00:06:29
若要仅从a中删除尾随的回车,请使用
a=${a%$'\r'}发布于 2014-02-26 23:01:33
您可以使用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发布于 2018-07-10 13:35:42
我试图通过libnotify发送通知,其中的内容可能包含无法打印的字符。现有的解决方案对我来说不是很有效(使用tr works的字符白名单,但剥离任何多字节字符)。
以下是通过测试时有效的方法:
message=$(iconv --from-code=UTF-8 -c <<< "$message")https://stackoverflow.com/questions/22045175
复制相似问题