免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: famdestiny

请帮写个shell脚本 [复制链接]

论坛徽章:
0
发表于 2009-09-18 15:07 |显示全部楼层
development:~# cat asd.txt
/*xxxxxxxxxxxxxxxxxxxxx
/*xxxxxxxx/*xxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx*/
development:~# sed -e 's/\/\*/\ \*/g' -e '1s/^\ \*/\/\*/' asd.txt
/*xxxxxxxxxxxxxxxxxxxxx
*xxxxxxxx *xxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx*/

这样总万能了吧..

论坛徽章:
0
发表于 2009-09-18 15:26 |显示全部楼层

回复 #11 cxfcxf 的帖子

aaaaaaaaaa
/*xxxxxxxxxxxxxxxxxxxxx
/*xxxxxxx/*xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx*/
aaaaaaaaaaa
aaaaaaaaaaa
/*adDDDDDDDDDDddddddd
*dddddddddddddddddd
ddddddddddddddddddd*/

这样还能吗?

论坛徽章:
0
发表于 2009-09-18 15:41 |显示全部楼层
sed ':a;N;s/\/\*/\*/2;ta' file

论坛徽章:
0
发表于 2009-09-18 15:47 |显示全部楼层
sed写不来 就用perl凑活了
这个总万能了吧

development:~# cat asd.txt
aaaaaaaaa
/*xxxxxxxxxxxxxxxxxxxxx
/*xxxxxxx/*xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx*/
aaaaaaaaaaa
aaaaaaaaaaa
/*adDDDDDDDDDDddddddd
*dddddddddddddddddd
ddddddddddddddddddd*/

  1. development:~# cat cclear.pl
  2. #!/usr/bin/perl

  3. use strict;
  4. use warnings;

  5. $/ = "";
  6. foreach (<>) {
  7.     chomp;
  8.     s/\/\*/\ \*/g;
  9.     s/\ \*([^\ \*]*)/\/\*$1/;
  10.     print "$_\n";
  11. }
复制代码

development:~# ./cclear.pl asd.txt
aaaaaaaaa
/*xxxxxxxxxxxxxxxxxxxxx
*xxxxxxx *xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx*/
aaaaaaaaaaa
aaaaaaaaaaa
*adDDDDDDDDDDddddddd
*dddddddddddddddddd
ddddddddddddddddddd*/

还是别样子?
要/* */之间的 换个换行符就可以了

  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;

  4. $/ = '*/';
  5. foreach (<>) {
  6.     s/\/\*/\ \*/g;
  7.     s/\ \*([^\ \*]*)/\/\*$1/;
  8.     print "$_";
  9. }
复制代码

development:~# ./cclear.pl asd.txt
aaaaaaaaa
/*xxxxxxxxxxxxxxxxxxxxx
*xxxxxxx *xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx*/
aaaaaaaaaaa
aaaaaaaaaaa
/*adDDDDDDDDDDddddddd
*dddddddddddddddddd
ddddddddddddddddddd*/

[ 本帖最后由 cxfcxf 于 2009-9-18 23:13 编辑 ]

论坛徽章:
0
发表于 2009-09-18 16:00 |显示全部楼层
原帖由 lucash 于 2009-9-18 15:41 发表
sed ':a;N;s/\/\*/\*/2;ta' file

你自己这个没试过吧?
development:~# cat asd.txt
aaaaaaaaa
/*xxxxxxxxxxxxxxxxxxxxx
/*xxxxxxx/*xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx*/
aaaaaaaaaaa
aaaaaaaaaaa
/*adDDDDDDDDDDddddddd
*dddddddddddddddddd
ddddddddddddddddddd*/
development:~# sed ':a;N;s/\/\*/\*/2;ta' asd.txt
aaaaaaaaa
/*xxxxxxxxxxxxxxxxxxxxx
/*xxxxxxx*xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx*/
aaaaaaaaaaa
aaaaaaaaaaa
/*adDDDDDDDDDDddddddd
*dddddddddddddddddd
ddddddddddddddddddd*/

明显不对啊

论坛徽章:
0
发表于 2009-09-18 16:24 |显示全部楼层
看来只能动用脚本了,一点点语句搞不定...

论坛徽章:
0
发表于 2009-09-18 16:28 |显示全部楼层
感谢两位达人啊

论坛徽章:
0
发表于 2009-09-18 16:29 |显示全部楼层
可以搞定啊 用sed 吧换行符设成*/ 然后笨的就2句 一句是 s/\/\*/\ \*/g;  一句是 s/\ \*([^\ \*]*)/\/\*$1/; 这里sed写法不一样 $1 是\1  而括号要\(  \)
聪明的肯定有.....大牛写的出..我写不出...
sed太差...惭愧

[ 本帖最后由 cxfcxf 于 2009-9-18 23:13 编辑 ]

论坛徽章:
0
发表于 2009-09-18 17:04 |显示全部楼层

回复 #15 cxfcxf 的帖子

果然有问题。。多谢指出

论坛徽章:
0
发表于 2009-09-18 17:06 |显示全部楼层

回复 #15 cxfcxf 的帖子

改正一下:

sed '/^\/\*/,/\*\/$/{:a;N;s/\(\/\*\)\([^/\]*\)\/\*/\1\2\*/;ta}' file
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP