六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 310|回复: 0

linux ls去除特殊字符

[复制链接]

升级  78%

47

主题

47

主题

47

主题

秀才

Rank: 2

积分
167
 楼主| 发表于 2013-1-17 02:14:32 | 显示全部楼层 |阅读模式
有时候,不幸遇到不如意的系统,ls后就带有不可见字符,只好想方设法解决。
看系统是否如意,可以用下面命令检查:
ls | od -c
如果结果显示有
0000000 033   [   0   0   m 033   [   0   0   ;   3   4   m   d   o   c
之类字符,就悲剧了。如果没有,那就不用看下文了。
 
==========如何对付悲剧
下面的字符是不需要的:
033   [   0   0   m 033   [   0   0   ;   3   4   m
可以用sed删除它们。
 
fileName=`ls|sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"`
echo ${fileName}|od -c
 
解释:
sed -r "s/字符串1/字符串2/g"
 
-r 用extended regular expressions
s表示要执行替换命令
字符串1=\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]
字符串2为空,故执行删除
g表示全局
 
字符串1=\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]
        \x1B Hex码,==、033==ESC,Escape
 
参考:
http://www.commandlinefu.com/commands/view/3584/remove-color-codes-special-characters-with-sed
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

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