首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >加工控制字符

加工控制字符
EN

Unix & Linux用户
提问于 2011-01-14 13:48:26
回答 3查看 4.6K关注 0票数 2

我有一个日志文件,其中包含一组不可见的控制字符,如十六进制\u0003。

我想用像SED这样的东西来替换它,但是无法得到正则表达式的第一部分来匹配:

/S/^E/一些字符串

我正在创建^E,方法是按CTRL CTRL-0CTRL-3创建特殊字符,从'man‘页面中读取:

003 3 03 ETX

但是,没有任何内容与此控制字符相匹配。

任何帮助都很感激!

EN

回答 3

Unix & Linux用户

发布于 2011-01-14 15:49:37

这个perl一行程序将执行工作--小心,它将修改文件:

代码语言:javascript
运行
复制
perl -i -pe 's#\x{0003}#some_string#g' /path/to/log/file

如果要在指定范围内用字符代码替换若干字符:

代码语言:javascript
运行
复制
echo {A..Z} | perl -i -pe 's#[\x{0040}-\x{0047}]#P#g'
P P P P P P P H I J K L M N O P Q R S T U V W X Y Z 

(echo {A..Z}在bash中生成一串字母字符)

票数 2
EN

Unix & Linux用户

发布于 2011-01-15 06:31:51

这将用#替换所有不可打印的字符。

代码语言:javascript
运行
复制
sed 's/[^[:print:]]/#/g' logfile
票数 2
EN

Unix & Linux用户

发布于 2011-01-15 08:02:28

我不确定我是否理解您想要的内容,但是如果要替换连续的十六进制字节0x000x03的出现,应该可以这样做:

代码语言:javascript
运行
复制
$ echo '0 61 20 00 03 0A' | xxd -r | sed 's/\x00\x03/test/g' 
a test
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/5851

复制
相关文章

相似问题

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