perl检索的一个问题?谢谢

perl检索的一个问题?谢谢

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)

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


谢谢
#!/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
高手,真快啊
cat test | awk '{print $1}' | tr -d '()'
cut cut cut ....
cut好像是处理这种类似excel格式的文本的,具体怎么写来着,大天使?

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

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

如果用perl,就这样

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

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

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

perl a.pl a.txt


QUOTE:
原帖由 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]);

就可以。
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$
应该是cut -d ' ' -f1 a.txt  
昏~


QUOTE:
原帖由 hdc1112 于 2008-7-9 12:54 发表
cut好像是处理这种类似excel格式的文本的,具体怎么写来着,大天使?

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

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

如果用perl,就这样

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

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

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

[Copy to clipboard] [ - ]
CODE:
perl -lane 'print $F[0]' aaa.txt