免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 12005 | 回复: 7

perl one liner问题,循环打印一行里面所有匹配结果 [复制链接]

论坛徽章:
0
发表于 2013-07-29 20:24 |显示全部楼层
最近自学perl,正好同事让我帮忙写个命令来拿一些数据,所以就想用perl练习练习
结果不太顺利。。思路死胡同了,向大家学习学习

假设n个文件,里面都是数字+小写字母组成的单词,要把所有单词取出来并且跟文件名一起打印出来。

文件例子如下
  1. cat abc.txt
  2. 123abc2993kkdi2999baccc29301mdkci
复制代码
  1. cat cde.txt
  2. 222dsb333nkn444kwjekj
复制代码
与其打印结果如下
  1. abc.txt abc kkdi baccc mdkci
  2. cde.txt dsb nkn kwjekj
复制代码
  1. erl -ne 'printf $ARGV if/[a-z]+/;print " ",$1 while /([a-z]+)/g' *.txt
  2. abc.txt abc kkdi baccc mdkcicde.txt dsb nkn kwjekj

  3. perl -nle 'printf $ARGV if/[a-z]+/;print " ",$1 while /([a-z]+)/g' *.txt
  4. abc.txt abc
  5. kkdi
  6. baccc
  7. mdkci
  8. cde.txt dsb
  9. nkn
  10. kwjekj
复制代码
l参数的结果让我吐血啊。。。

论坛徽章:
0
发表于 2013-07-29 20:25 |显示全部楼层
最后被迫用多一个awk解决问题。。

求perl版解决方案。。。

论坛徽章:
0
发表于 2013-07-29 20:48 |显示全部楼层
  1. perl -nle '$a="";printf $ARGV if/[a-z]+/;$a .= " $1" while /([a-z]+)/g;print $a if $a' *.txt
  2. abc.txt abc kkdi baccc mdkci
  3. cde.txt dsb nkn kwjekj
复制代码
加了一个变量。。。哎,犯傻了

论坛徽章:
0
发表于 2013-07-30 00:20 |显示全部楼层
本帖最后由 Kotokz 于 2013-07-30 00:50 编辑
  1. perl -lne '@matches = /([a-z]+)/g;print join(" ",$ARGV,@matches) if @matches' *.txt
  2. abc.txt abc kkdi baccc mdkci
  3. cde.txt dsb nkn kwjekj
复制代码

论坛徽章:
8
双子座
日期:2013-08-31 07:37:12金牛座
日期:2013-09-09 18:49:12处女座
日期:2013-09-23 11:43:14处女座
日期:2013-10-09 19:48:21狮子座
日期:2014-03-24 18:22:12丑牛
日期:2014-04-22 22:07:51申猴
日期:2014-06-12 21:54:13双鱼座
日期:2014-06-13 21:52:31
发表于 2013-07-30 10:35 |显示全部楼层
自问自答啊,学习了
回复 4# Kotokz


   

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2013-07-30 11:46 |显示全部楼层
回复 4# Kotokz

how about this ...

# perl -lane '{s/\d+/ /g;print "$ARGV $_"}' abc.txt cde.txt
abc.txt  abc kkdi baccc mdkci
cde.txt  dsb nkn kwjekj

论坛徽章:
0
发表于 2013-07-30 14:26 |显示全部楼层
回复 6# jason680

谢谢,学习了


   

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
发表于 2013-07-30 23:55 |显示全部楼层
谢谢,学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP