免费注册 查看新帖 |

Chinaunix

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

perl检索的一个问题?谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-09 10:14 |只看该作者 |倒序浏览
a.txt内容如下:

    (xddr_model2.xi4<6>.net066) msd_pddrio   4.40e+56   4.74e+56   71.982
    (xddr_model2.xi4<6>.net07 msd_pddrio   3.36e+19   3.82e+19  120.716
    (xddr_model2.xi4<5>.net066) msd_pddrio  -6.51e+58  -8.14e+58  200.000
  (xddr_model2.xi1.251) solution    -3.80e+32  -4.75e+32  199.416
  (xddr_model2.xi1.252) solution_h    -2.80e+42  -3.54e+42  209.490
  (xddr_model2.xi1.253) solution    -1.19e+42  -1.48e+42  190.841

我想通过perl把a.txt文件内容生成为b.txt内容如下:


    (xddr_model2.xi4<6>.net066)
    (xddr_model2.xi4<6>.net07
    (xddr_model2.xi4<5>.net066)
    (xddr_model2.xi1.251)
     (xddr_model2.xi1.252)
     (xddr_model2.xi1.253)

也就是说,我想要()里的。。。以外的我都不要


谢谢

论坛徽章:
0
2 [报告]
发表于 2008-07-09 10:33 |只看该作者
#!/usr/bin/perl
use warnings;
use strict;

open FILE1,">","b.txt";
while(<DATA>)
{
    if(/(\(.*\))/)
    {
        print FILE1 "$1\n";
    }
}
__DATA__
(xddr_model2.xi4<6>.net066) msd_pddrio   4.40e+56   4.74e+56   71.982
(xddr_model2.xi4<6>.net071) msd_pddrio   3.36e+19   3.82e+19  120.716
(xddr_model2.xi4<5>.net066) msd_pddrio  -6.51e+58  -8.14e+58  200.000
(xddr_model2.xi1.251) solution    -3.80e+32  -4.75e+32  199.416
(xddr_model2.xi1.252) solution_h    -2.80e+42  -3.54e+42  209.490
(xddr_model2.xi1.253) solution    -1.19e+42  -1.48e+42  190.841

论坛徽章:
0
3 [报告]
发表于 2008-07-09 10:37 |只看该作者
高手,真快啊

论坛徽章:
0
4 [报告]
发表于 2008-07-09 10:49 |只看该作者
cat test | awk '{print $1}' | tr -d '()'

论坛徽章:
0
5 [报告]
发表于 2008-07-09 11:06 |只看该作者
cut cut cut ....

论坛徽章:
0
6 [报告]
发表于 2008-07-09 12:54 |只看该作者
cut好像是处理这种类似excel格式的文本的,具体怎么写来着,大天使?

还有,awk里的$1变量太方便了

似乎perl里没有这么方便的~

如果用perl,就这样

####a.pl#########

while(<>) {
        s/(^\(.*\)) .*/$1/;
        print $_;
}

###############

perl a.pl a.txt

论坛徽章:
0
7 [报告]
发表于 2008-07-09 15:14 |只看该作者
原帖由 hdc1112 于 2008-7-9 12:54 发表
cut好像是处理这种类似excel格式的文本的,具体怎么写来着,大天使?

还有,awk里的$1变量太方便了

似乎perl里没有这么方便的~

如果用perl,就这样

####a.pl#########

while() {
        s/(^\ ...



他这个就取第一列的内容 cut -d -f1 a.txt 应该可以了 (没测试)

至于用 perl ,也可以很简单的

print((split)[0]);

就可以。

论坛徽章:
0
8 [报告]
发表于 2008-07-09 18:25 |只看该作者
cut -d -f1 a.txt不对哦
提示

-bash-3.1$ cut -d f1 a.txt
cut: the delimiter must be a single character
Try `cut --help' for more information.
-bash-3.1$ cut -d ' ' a.txt
cut: you must specify a list of bytes, characters, or fields
Try `cut --help' for more information.
-bash-3.1$

论坛徽章:
0
9 [报告]
发表于 2008-07-09 18:26 |只看该作者
应该是cut -d ' ' -f1 a.txt  
昏~

论坛徽章:
0
10 [报告]
发表于 2008-07-10 04:04 |只看该作者
原帖由 hdc1112 于 2008-7-9 12:54 发表
cut好像是处理这种类似excel格式的文本的,具体怎么写来着,大天使?

还有,awk里的$1变量太方便了

似乎perl里没有这么方便的~

如果用perl,就这样

####a.pl#########

while() {
        s/(^\ ...


perl里面也有这样的变量,你把上面的内容存为文件aaa.txt,然后试试下面这条命令:


  1. perl -lane 'print $F[0]' aaa.txt
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP