免费注册 查看新帖 |

Chinaunix

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

如何从文本中提取域输出 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-23 21:45 |只看该作者 |倒序浏览
初学perl,目前我有这样一个问题请教.
++++++++++++++++++++++++++++++++++++++++++
文本----- test:
aa bb cc
cc dd ee
............


如何利用perl像用shell的位置参数($n)似的分别提取各域:
yourname aa college bb age cc;
yourname cc college dd age ee;
.................
最后输出到某一文本文件.
++++++++++++++++++++++++++++++++++++++++++

I'am waitting.......

论坛徽章:
0
2 [报告]
发表于 2007-05-23 23:32 |只看该作者
@strings = split(/\s+/,$string);

论坛徽章:
0
3 [报告]
发表于 2007-05-24 08:32 |只看该作者
能不能劳驾您,写的较完整一些呢,雏形也好呀!

论坛徽章:
0
4 [报告]
发表于 2007-05-24 09:20 |只看该作者
啊?还想怎么完整呀?你写了多少 让我看看吧 我可以帮你改改

论坛徽章:
0
5 [报告]
发表于 2007-05-24 09:31 |只看该作者
这是大概意思,还错误多多!
open (ff,"test");
$tt=s/^\s+|\s+|\s+$/ /g;
@tt=split(/ /,$tt);
foreach (<ff>){
  ($fielde1,$fielde2,$fielde3)=@tt;
print LOG ("this  is $fiedle1 and $fielde2 and $fielde3");
open (LOG,">>targe.txt");
close LOG;
}
close ff;

[ 本帖最后由 sjbost 于 2007-5-24 09:41 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2007-05-24 10:03 |只看该作者
用split函数来返回一个分割的列表。

论坛徽章:
0
7 [报告]
发表于 2007-05-24 10:36 |只看该作者
原帖由 sjbost 于 2007-5-24 09:31 发表
这是大概意思,还错误多多!
open (ff,"test");
$tt=s/^\s+|\s+|\s+$/ /g;
@tt=split(/ /,$tt);
foreach (<ff>){
  ($fielde1,$fielde2,$fielde3)=@tt;
print LOG ("this  is $fiedle1  ...

把替换和分割字符串的部分放到循环里面去,比如这样

  1. use warnings;
  2. use strict;

  3. my ($f1, $f2, $f3) = ();

  4. for(<DATA>){
  5.     s/^\s+|\s+$//g;
  6.     ($f1, $f2, $f3) = split /\s+/;
  7.     {
  8.         local $, = ' ';
  9.         print $f1, $f2, $f3, "\n";
  10.     }
  11. }


  12. __END__
  13. aa bb cc
  14.   aa2 bb2    cc2   
复制代码

[ 本帖最后由 nkcsx 于 2007-5-24 10:39 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2007-05-24 12:02 |只看该作者
7楼的方法不错,感谢啦!!!

论坛徽章:
0
9 [报告]
发表于 2007-05-24 12:03 |只看该作者
再次感谢各位帮忙呀!!!

论坛徽章:
0
10 [报告]
发表于 2007-05-25 11:11 |只看该作者
shell的问题,应该用shell方法来解决,楼上几位给人感觉在用高射炮打蚊子 ;)

perl -ane 'print qq(yourname $F[-1] college $F[-2] age $F[-3]\n)' test  >> target.txt
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP