F1.txt
boy a s b/b/b see
girl d e w/w/w day
结果
F2.txt
b/b/b see
w/w/w day
大家好,你能帮帮我吗?我有一个文件 f1.txt 我想打印文件中每一行中存在的最后 2 个字符串。提前致谢
这将做你需要的
use strict;
use warnings;
open my $in, '<', 'f1.txt' or die $!;
open my $out, '>', 'f2.txt' or die $!;
while (<$in>) {
my @fields = split;
splice @fields, 0, @fields - 2;
print $out "@fields\n";
}
输出
b/b/b see
w/w/w day
不太了解 perl,但是要从任何语言的行中提取想要的字符串,这个正则表达式会做:
\s([^\s]+\s[^\s]+)$
编辑:
正如有人所说,正则表达式是为特定文件格式量身定制的,这种格式会更加灵活,并且最后两个字符串由任意数量的空格分隔:
\s+(\S+)\s+(\S+)$
也许是这样的:
perl -lane 'print "@F[-2,-1]" if $F[-2] && $F[-1];' f1.txt >f2.txt