免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6296 | 回复: 8
打印 上一主题 下一主题

怎么去掉文本中的颜色代码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-06 11:30 |只看该作者 |倒序浏览
刚学shell,自己写了点命令让各种命令的输出有了颜色显示,但现在碰到了一个问题如果我把它导入文件或者是给grep使用,会多一大堆[[2:32m等表示颜色的字符,怎样才可以去掉他们呢?

如^[[0;0m? root_fs^[[0;0m
   ^[[0;0m? um_lib.list^[[0;0m
   ^[[0;0m? xx^[[0;0m
   ^[[1;32mIndex: mkfs.sh^[[0;0m
   ^[[1;32m===================================================================^[[0;0m
   ^[[1;32mRCS file: /home/cvsadmin/sbu-i/neutral_trunk/tools/mkfs.sh,v^[[0;0m
   ^[[1;32mretrieving revision 1.3^[[0;0m
   ^[[1;32mdiff -u -b -B -r1.3 mkfs.sh^[[0;0m
   ^[[1;31m--- mkfs.sh     11 Jul 2008 00:59:03 -0000      1.3^[[0;0m
   ^[[1;34m+++ mkfs.sh     6 Aug 2008 02:56:28 -0000^[[0;0m
   ^[[1;35m@@ -30,7 +30,7 @@^[[0;0m
   ^[[0;0m                 rm -f $FS_NAME^[[0;0m
   ^[[0;0m         fi^[[0;0m
   ^[[0;0m else^[[0;0m
   ^[[1;31m-       dd if=/dev/zero of=./root_fs bs=1M count=320 ^[[0;0m
   ^[[1;34m+       dd if=/dev/zero of=./root_fs bs=1M count=64 ^[[0;0m
   ^[[0;0m fi^[[0;0m
   ^[[0;0m ^[[0;0m
   ^[[0;0m umount /mnt^[[0;0m
   ^[[0m

我想要的效果是:
? root_fs
? um_lib.list
? xx
Index: mkfs.sh
===================================================================
RCS file: /home/cvsadmin/sbu-i/neutral_trunk/tools/mkfs.sh,v
retrieving revision 1.3
diff -u -b -B -r1.3 mkfs.sh
--- mkfs.sh     11 Jul 2008 00:59:03 -0000      1.3
+++ mkfs.sh     6 Aug 2008 02:58:04 -0000
@@ -30,7 +30,7 @@
                rm -f $FS_NAME
        fi
else
-       dd if=/dev/zero of=./root_fs bs=1M count=320
+       dd if=/dev/zero of=./root_fs bs=1M count=64
fi

umount /mnt

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2008-08-06 12:03 |只看该作者
在vim里 这样试一试
:%s/^[\[[0-9];[0-9]m//g
#红色部分按ctrl+v+[获得

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
3 [报告]
发表于 2008-08-06 12:11 |只看该作者

回复 #1 knight_oliver 的帖子

对于样本数据:sed 's/\^[^^]*m//g' urdata

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
4 [报告]
发表于 2008-08-06 12:12 |只看该作者
原帖由 寂寞烈火 于 2008-8-6 12:03 发表
在vim里 这样试一试
:%s/^[\[[0-9];[0-9]m//g
#红色部分按ctrl+v+[获得

请教 烈火, LZ的^[只是一个字符?

论坛徽章:
0
5 [报告]
发表于 2008-08-06 12:36 |只看该作者
原帖由 寂寞烈火 于 2008-8-6 12:03 发表
在vim里 这样试一试
:%s/^[\[[0-9];[0-9]m//g
#红色部分按ctrl+v+[获得

ctrl + v + Esc ?

论坛徽章:
0
6 [报告]
发表于 2008-08-06 14:05 |只看该作者

回复 #2 寂寞烈火 的帖子

这样做,总感觉处理得不干净。要是可以像ls那样就好了,在shell下面有颜色,导入文件就没有了。

论坛徽章:
0
7 [报告]
发表于 2008-08-06 21:26 |只看该作者
呵呵。玩火自焚啊。

论坛徽章:
0
8 [报告]
发表于 2008-08-06 21:39 |只看该作者
原帖由 blackold 于 2008-8-6 12:12 发表

请教 烈火, LZ的^[只是一个字符?

是的。你可以试试echo -e "^[[31;1mabc^[[0mdef"
原帖由 dearvoid 于 2008-8-6 12:36 发表

ctrl + v + Esc ?

CTRL+V+[和CTRL+V+ESC一样的,就好像CTRL+V+M和CTRL+V+回车一样,还有I和TAB也是一样的。
区别在于CTRL+V+控制符的话可以放开CTRL然后按控制符,但是I、M、[就不行,一定要按住CTRL。

论坛徽章:
0
9 [报告]
发表于 2008-08-06 21:43 |只看该作者
对不起!!!walkerxk 兄
浏览时,误点“臭蛋”

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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP