LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1074|回复: 8

请问有没有办法把一些不可见的字符过滤掉?

[复制链接]
发表于 2004-5-25 11:08:10 | 显示全部楼层 |阅读模式
想用sed 或awk的正则表达式将 036 这个字符过滤掉,(在vi中显示为两个^^)
在od -o 中显示为020036
在od -b 中显示为036
我想用 sed -e 's/\036//g' 或 sed -e 's/\020036//g' 将其去掉,但不行。
         
请求帮助。
发表于 2004-5-25 11:19:14 | 显示全部楼层
用col -b 试试看
 楼主| 发表于 2004-5-25 11:37:13 | 显示全部楼层

谢谢

有没有col 的中文说明?
它把所有不可以见字符都去掉了,但有些我还想要(:
 楼主| 发表于 2004-5-25 11:40:54 | 显示全部楼层
更重要的是,我想把它转换成某个字符
发表于 2004-5-25 11:45:43 | 显示全部楼层
那用awk吧:如:
/home/lee#echo "a^V"|awk '{gsub(/\026/,"b");print}'
ab
发表于 2004-5-25 12:46:00 | 显示全部楼层

对于nonprintable字符的替换,sed的形式是"\xHH",HH是hex的.

sed -e 's/\x1E//g' your_data_file
你的036是octal的吧?试看看好使么?
发表于 2004-5-25 19:43:04 | 显示全部楼层

回复: 对于nonprintable字符的替换,sed的形式是"\xHH",HH是hex的.

最初由 retypedef 发表
sed -e 's/\x1E//g' your_data_file
你的036是octal的吧?试看看好使么?

可以直接用八进制:sed -e 's/\o036//' /your/file
发表于 2004-5-25 19:46:31 | 显示全部楼层

回复: 请问有没有办法把一些不可见的字符过滤掉?

最初由 cycker 发表
想用sed 或awk的正则表达式将 036 这个字符过滤掉,(在vi中显示为两个^^)
在od -o 中显示为020036
在od -b 中显示为036
我想用 sed -e 's/\036//g' 或 sed -e 's/\020036//g' 将其去掉,但不行。
         
请求帮助。

$ sed -e s/$'\x1E'//g /your/file
 楼主| 发表于 2004-5-26 12:31:14 | 显示全部楼层

谢谢

谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表