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 -lane 'print "@F[-2,-1]" if $F[-2] && $F[-1];' f1.txt >f2.txt
perl はよくわかりませんが、任意の言語の行から必要な文字列を抽出するには、次の正規表現を使用します。
\s([^\s]+\s[^\s]+)$
編集:
正規表現はその特定のファイル形式に合わせて調整されていると誰かが述べたように、これはより柔軟で、任意の数のスペースで区切られた最後の 2 つの文字列を取得します。
\s+(\S+)\s+(\S+)$