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

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

怎么从一个文件里找到‘=’字符,并把这个字符前面的单词保存在另外一个文件里,谢谢!
本人刚开始学习perl!
刚学会的不知道管用不.

$ perl -ne 'if(/(.*?)=/m && !$a){ print $1;$a=1}else{print $_ unless $a};' <string1.pl
#!/usr/bin/perl -w

use strict;

my $x
-------------------
$ cat string1.pl
#!/usr/bin/perl -w

use strict;

my $x = 'A';

#print $x++;

sub f { sub {$x++} };
sub g { sub {$x++} if $x; };

print "--->" , f()->();
my $F = f();
my $G = g();

print $F->(),$G->(),"," for(1..4);


QUOTE:
原帖由 kgd924 于 2007-10-11 16:25 发表
刚学会的不知道管用不.

$ perl -ne 'if(/(.*?)=/m && !$a){ print $1;$a=1}else{print $_ unless $a};' ();
my $F = f();
my $G = g();

print $F->(),$G->(),"," for(1..4);

你好,我刚学习Perl.我要处理的文本文件(Input)是下面的格式:
Name1 = xxx;
Name2 = xxx;
......
Namen = xxxx;

我要写一个脚本,把‘=’前的部分(也就是名字)取出来然后写到另一个output文件中,output文件的格式如下:
Name1,
Name2,
.....
Namen,

我顺便想学习一下perl,谢谢!!
噢,那还简单一些. 试试

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



QUOTE:
原帖由 kgd924 于 2007-10-11 16:44 发表
噢,那还简单一些. 试试

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

kgd924你好,就一行就可以处理了么?
Input文件和Output文件的名字要指定吧?

我看打开一个文件是这样操作的
#!/usr/bin/perl
use strict;

open(FILE, "log.txt") or die("can't open log.txt");
while (my $line = <FILE>) {
        my ($left, $right) = split(/\s/, $line);
        print("left = $left, right = $right\n");
}
close(FILE);

你能不能给我一个完整的脚本我试一下,谢谢


QUOTE:
原帖由 kgd924 于 2007-10-11 16:44 发表
噢,那还简单一些. 试试

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

哦,我明白了,你让我在cmd里执行这个?
我把Input文件名字和output文件名字替换了试了一下,报了一个错误:
Can't find string terminator "'" anywhere before EOF at -e line 1.
这个是什么意思,不能在第一行找到"'"符号?
直接在shell下运行就可以了,, Input和Oput改为你的文件命.


QUOTE:
原帖由 kgd924 于 2007-10-11 17:03 发表
直接在shell下运行就可以了,, Input和Oput改为你的文件命.

我在shell下运行了,报了一个错误:
Can't find string terminator "'" anywhere before EOF at -e line 1.
这个是什么意思,不能在第一行找到"'"符号?

In.txt里就一行文本,内容如下:
G_BBB = 3;

生成的out.txt是空的
你是windows? 这个也许可以

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


QUOTE:
原帖由 kgd924 于 2007-10-11 17:21 发表
你是windows? 这个也许可以

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

恩,实在windows上,老大可以用了,但是好像只能提取那些 AAA = B的AAA,如果AAA=B,没有空格的话就不行了,怎么小改一下啊
我在perl语言入门第四版上怎么查不到你这个语句啊,好像写的很精炼,
"print \"$1,\n\"
这个我知道是在out文件里写字符串数据,然后逗号和换行,
if(/(\w+)\s+=/);
这个应该是寻找“=”符号?
(\W+)是什么意思,书里面好像没有讲到啊。谢谢