怎么从一个文件里找到‘=’字符,并把这个字符前面的单词保存在另外一个文件里,谢谢

对把\s去了是吧,这个是空格,好的
这是是命令行的写法,好像精华帖里有讲.

perl -ne "print \"$1,\n\" if(/(\w+)\s*=/);" Input >output

>(\W+)是什么意思
这是正则表达式.
我刚才试了一下,能不能写一个可以兼容有空格,没空格,或者=号前是\t的,
都可以提取前面内容的脚本呢?
perl -ne "print \"$1,\n\" if(/(\w+)\s*=/);" Input >output


QUOTE:
原帖由 kgd924 于 2007-10-11 17:46 发表
perl -ne "print \"$1,\n\" if(/(\w+)\s*=/);" Input >output

你好,还有一个问题,我想把这个脚本写成一个windows下的.pl文件,也就是perl的文本,怎么写?

#!/ usr/bin/Perl
if(/(\w+)\t+=/)
        print \"E$1,\n\";
In.txt > out.txt

这样好像不行,谢谢
    use strict;
    use warnings;

    open(FIN,  '<', $ARGV[0]) or die "Cannot open $ARGV[0]: $!\n";
    open(FOUT, '>', $ARGV[1]) or die "Cannot open $ARGV[1]: $!\n";
    
    while (<FIN>) {
        print FOUT "$1,\n" if ($_ =~ /(.+?)\s*=/);
    }
    
    close FOUT;
    close FIN;
这里我也提供一个方法:

按楼主说的,在WINDOWS平台下:
$^I=".bak";
while (<>){
     print "$1,\n" if ($_ =~ /(.+?)\s*=/);
}

将上面的程序保存为tem.pl;
假设原文本文件为in.txt;
运行tem.pl in.txt即可!


QUOTE:
原帖由 Lonki 于 2007-10-11 19:22 发表
    use strict;
    use warnings;

    open(FIN,  '', $ARGV[1]) or die "Cannot open $ARGV[1]: $!\n";
    
     ...

多谢 ,可以用哈,太感谢了


QUOTE:
原帖由 windows.li 于 2007-10-12 09:19 发表
这里我也提供一个方法:

按楼主说的,在WINDOWS平台下:
$^I=".bak";
while (){
     print "$1,\n" if ($_ =~ /(.+?)\s*=/);
}

将上面的程序保存为tem.pl;
假设原文本文件为in.txt;
运行tem.pl in.tx ...

多谢 ,perl是个好东西啊