我有一个日志文件,其中包含一组不可见的控制字符,如十六进制\u0003。
我想用像SED这样的东西来替换它,但是无法得到正则表达式的第一部分来匹配:
/S/^E/一些字符串
我正在创建^E,方法是按CTRL CTRL-0CTRL-3创建特殊字符,从'man‘页面中读取:
003 3 03 ETX
但是,没有任何内容与此控制字符相匹配。
任何帮助都很感激!
发布于 2011-01-14 15:49:37
这个perl一行程序将执行工作--小心,它将修改文件:
perl -i -pe 's#\x{0003}#some_string#g' /path/to/log/file
如果要在指定范围内用字符代码替换若干字符:
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中生成一串字母字符)
发布于 2011-01-15 06:31:51
这将用#
替换所有不可打印的字符。
sed 's/[^[:print:]]/#/g' logfile
发布于 2011-01-15 08:02:28
我不确定我是否理解您想要的内容,但是如果要替换连续的十六进制字节0x000x03的出现,应该可以这样做:
$ echo '0 61 20 00 03 0A' | xxd -r | sed 's/\x00\x03/test/g'
a test
https://unix.stackexchange.com/questions/5851
复制相似问题