免费注册 查看新帖 |

Chinaunix

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

怎么用perl删除包含字符串的整行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-18 15:04 |只看该作者 |倒序浏览
怎么用perl删除包含字符串的整行



@spp = grep !/^\s*111111/, @sp;  #这个只能删除111111,可删除不了包含111111的整行

论坛徽章:
0
2 [报告]
发表于 2007-09-18 15:17 |只看该作者
@spp = grep !/^.*111111.*$/, @sp;


or

@spp = grep !/111111/, @sp;


[ 本帖最后由 Lonki 于 2007-9-18 15:28 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-09-18 15:26 |只看该作者

回复 #2 Lonki 的帖子

试了,不行,还是只能删除111111

例子

@sp=111111112222222222
         333333333333333333
         444444444444444444

@spp = grep !/^.*111111.*$/, @sp;

or

@spp = grep !/111111/, @sp;

@spp =2222222222
            333333333333333333
            444444444444444444

结果应该是

@spp =333333333333333333
            444444444444444444

论坛徽章:
0
4 [报告]
发表于 2007-09-18 15:33 |只看该作者
原帖由 zhaimeng 于 2007-9-18 15:26 发表
试了,不行,还是只能删除111111

例子

@sp=111111112222222222
         333333333333333333
         444444444444444444

@spp = grep !/^.*111111.*$/, @sp;

or

@spp = grep !/111111/, @sp ...




测试是没有问题的.
    my @sp = qw/111111112222222222
         333333333333333333
         444444444444444444/;
    my @spp = grep !/111111/, @sp;
    print join("\n", @spp);


把你对@sp具体赋值的代码贴出来.

论坛徽章:
0
5 [报告]
发表于 2007-09-18 15:40 |只看该作者

回复 #4 Lonki 的帖子

&test5500|20070917|20070917
1111111111111|11111111111111111111|20070927|2000|1
2222222222222|22222222222222222222|20070927|2000|1
3333333333333|33333333333333333333|20070927|2000|1
4444444444444|44444444444444444444|20070927|2000|1
5555555555555|55555555555555555555|20070927|2000|1
6666666666666|66666666666666666666|20070927|2000|1

需要把包含&test的整行删掉  谢谢Lonki的热心帮助

论坛徽章:
0
6 [报告]
发表于 2007-09-18 15:54 |只看该作者
原帖由 zhaimeng 于 2007-9-18 15:40 发表
&test5500|20070917|20070917
1111111111111|11111111111111111111|20070927|2000|1
2222222222222|22222222222222222222|20070927|2000|1
3333333333333|33333333333333333333|20070927|2000|1
4444444444 ...

这个应该是文件中的东西,楼主说明白点......

论坛徽章:
0
7 [报告]
发表于 2007-09-18 15:57 |只看该作者

回复 #6 hutule110 的帖子

对 这个是文件里的内容 需要把包含&test的这一行去掉 条件一定要包含&test 因为&test后面的内容是动态的

结果为
1111111111111|11111111111111111111|20070927|2000|1
2222222222222|22222222222222222222|20070927|2000|1
3333333333333|33333333333333333333|20070927|2000|1
4444444444444|44444444444444444444|20070927|2000|1
5555555555555|55555555555555555555|20070927|2000|1
6666666666666|66666666666666666666|20070927|2000|1

论坛徽章:
0
8 [报告]
发表于 2007-09-18 16:09 |只看该作者
不能这样么:

  1. open(FN,"filename");
  2. while(<FN>){
  3.   next if /\&test/;
  4.   print;
  5. }
复制代码

论坛徽章:
0
9 [报告]
发表于 2007-09-18 16:11 |只看该作者
原帖由 zhaimeng 于 2007-9-18 15:57 发表
对 这个是文件里的内容 需要把包含&test的这一行去掉 条件一定要包含&test 因为&test后面的内容是动态的

结果为
1111111111111|11111111111111111111|20070927|2000|1
2222222222222|22222222222222222222 ...




这个无所谓, 文件存入list.
    my @sp = `cat testfile`;  ### use type on Windows

&nbsp;&nbsp;&nbsp;&nbsp;print @sp, "\n\n";
&nbsp;&nbsp;&nbsp;&nbsp;my @spp = grep !/&test/, @sp;
&nbsp;&nbsp;&nbsp;&nbsp;print @spp;


########### 运行结果 ############
&test5500|20070917|20070917
1111111111111|11111111111111111111|20070927|2000|1
2222222222222|22222222222222222222|20070927|2000|1
3333333333333|33333333333333333333|20070927|2000|1
4444444444444|44444444444444444444|20070927|2000|1
5555555555555|55555555555555555555|20070927|2000|1
6666666666666|66666666666666666666|20070927|2000|1

1111111111111|11111111111111111111|20070927|2000|1
2222222222222|22222222222222222222|20070927|2000|1
3333333333333|33333333333333333333|20070927|2000|1
4444444444444|44444444444444444444|20070927|2000|1
5555555555555|55555555555555555555|20070927|2000|1
6666666666666|66666666666666666666|20070927|2000|1

论坛徽章:
0
10 [报告]
发表于 2007-09-18 16:11 |只看该作者
open(OUTPUTFILE, "file.txt") or die "Can't open this file";

my @output;
while (<OUTPUTFILE>) {
        my $lines = $_;
        push (@output,$_) if $lines !~ m#\&test#

}
open(INPUTFILE, ">file.txt") or die "Can't open this file";
print INPUTFILE @output;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP