我有文件,文件中的一行看起来像这样
GIVEN=David Smith
GIVEN=John Doe Young
GIVEN=Ms Sam Parker
GIVEN=Mr James Free Foo ABC
GIVEN=Joe Cam-Barr
我只想查找以
GIVEN
开头的任何行,并找到最后一个空格字符(假设是姓氏),然后换行。所以输入=
FOO=Bar
GIVEN=David Smith
Baz=123
输出应为
FOO=Bar
GIVEN=David
LAST=Smith
Baz=123
据我所知:
(?<=(GIVEN=))(.*\ )
在这里查看演示http://regexr.com?30uh8
最佳答案
open(my $IN, "<infile.txt") or die $!;
chomp(my @lines = <$IN>);
close $IN;
foreach(@lines){
s/^(GIVEN\=.+)\s+(\S+)$/$1\nLAST=$2/;
}
open(my $OUT,">outfile.txt") or die $!;
print "$_\n" foreach(@lines);
close $OUT;
应该管用。如果输入文件很大,则根据需要进行修改以逐行读取。
关于regex - 将姓氏拆分到新行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10577325/