首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从bash变量中删除非打印字符

从bash变量中删除非打印字符
EN

Stack Overflow用户
提问于 2014-02-26 22:59:55
回答 5查看 24.5K关注 0票数 13

我有一些变量$a。此变量包含非打印字符(回车符^M)。

代码语言:javascript
复制
>echo $a
some words for compgen
>a+="END"
>echo $a
ENDe words for compgen

我怎样才能去掉那个字符?我知道echo "$a"显示它是正确的。但对我来说,这不是一个解决方案。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-02-27 00:06:29

若要仅从a中删除尾随的回车,请使用

代码语言:javascript
复制
a=${a%$'\r'}
票数 9
EN

Stack Overflow用户

发布于 2014-02-26 23:01:33

您可以使用tr

代码语言:javascript
复制
tr -dc '[[:print:]]' <<< "$var"

将从$var中删除不可打印的字符。

代码语言:javascript
复制
$ foo=$'abc\rdef'
$ echo "$foo"
def
$ tr -dc '[[:print:]]' <<< "$foo"
abcdef
$ foo=$(tr -dc '[[:print:]]' <<< "$foo")
$ echo "$foo"
abcdef
票数 27
EN

Stack Overflow用户

发布于 2018-07-10 13:35:42

我试图通过libnotify发送通知,其中的内容可能包含无法打印的字符。现有的解决方案对我来说不是很有效(使用tr works的字符白名单,但剥离任何多字节字符)。

以下是通过测试时有效的方法:

代码语言:javascript
复制
message=$(iconv --from-code=UTF-8 -c <<< "$message")
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22045175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档