bg090721 发表于 2013-1-17 02:14:32

linux ls去除特殊字符

有时候,不幸遇到不如意的系统,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\[({1,2}(;{1,2})?)?//g"`
echo ${fileName}|od -c
 
解释:
sed -r "s/字符串1/字符串2/g"
 
-r 用extended regular expressions
s表示要执行替换命令
字符串1=\x1B\[({1,2}(;{1,2})?)?
字符串2为空,故执行删除
g表示全局
 
字符串1=\x1B\[({1,2}(;{1,2})?)?
        \x1B Hex码,==、033==ESC,Escape
 
参考:
http://www.commandlinefu.com/commands/view/3584/remove-color-codes-special-characters-with-sed
页: [1]
查看完整版本: linux ls去除特殊字符