我有一个文件,其中一行看起来像这样
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/