我想打印文件中每行中最后2个字符串

时间:2012-08-09 03:56:17

标签: regex string perl

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我想打印文件中每一行的最后两个字符串。提前谢谢

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

不要非常了解perl,但要从这个正则表达式的任何语言中提取所需的字符串:

\s([^\s]+\s[^\s]+)$

修改

正如有人说正则表达式是针对特定文件格式而定制的,这个文件格式会更灵活,并且最后两个字符串被任意数量的空格分隔开来:

\s+(\S+)\s+(\S+)$

答案 2 :(得分:0)

也许是这样的:

perl -lane 'print "@F[-2,-1]" if $F[-2] && $F[-1];' f1.txt >f2.txt