Perl oneliner +行末にVALUEを印刷

Perl oneliner +行末にVALUEを印刷

次のPerl onelinerは正しい$CURRENT_VERSION一致をチェックし、$NEW_VERSION一致した場合はそれを印刷します。

例:

CURRENT_VERSION=223.3.12.4.5.3
NEW_VERSION=223.3.12.4.5.3
DATE=17.3.2013
echo $CURRENT_VERSION  | \
  perl -ne 'BEGIN { $STR = shift(@ARGV); } print if /\Q$STR\E/; ' $NEW_VERSION 
223.3.12.4.5.3

$DATE行の末尾に値を印刷するには、Perl Oneライナーに何を追加する必要がありますか?

たとえば、

CURRENT_VERSION=223.3.12.4.5.3
NEW_VERSION=223.3.12.4.5.3
DATE=17.3.2013
echo $CURRENT_VERSION  | \
  perl -ne'BEGIN { $STR = shift(@ARGV); } print if /\Q$STR\E/; ' \
  $NEW_VERSION < add syntax to  print $DATE > 
223.3.12.4.5.3  17.3.2013

ベストアンサー1

perl -F= -lane '$v{$F[0]}=$F[1]; if ($F[0] eq "DATE") {$v{CURRENT_VERSION} eq $v{NEW_VERSION} ? print $v{NEW_VERSION}, " ", $v{DATE} : exit(1)}'

または、まだ1行ですが、読むことができます。

perl -F= -lane '
    $v{$F[0]} = $F[1];
    if ($F[0] eq "DATE") {
        $v{CURRENT_VERSION} eq $v{NEW_VERSION} 
            ? print $v{NEW_VERSION}, " ", $v{DATE} 
            : exit(1)
    }' << END
CURRENT_VERSION=223.3.12.4.5.3
NEW_VERSION=223.3.12.4.5.3
DATE=17.3.2013
END

出力

223.3.12.4.5.3 17.3.2013

おすすめ記事