列のパターンが2つの行で一致する場合、新しい行を印刷する方法は?

列のパターンが2つの行で一致する場合、新しい行を印刷する方法は?

次のファイルがあります。

transcr_15824 -
YML042W -
transcr_18545 -
YCR105W +
transcr_16934 +
YDR032C +
transcr_15237 +
YDL008W -

本当に次のようなものが必要です。

transcr_15824 -
YML042W -
Match
transcr_18545 -
YCR105W +
Not
transcr_16934 +
YDR032C +
Match
transcr_15237 +
YDL008W -
Not

編集:デフォルトでは、2行ごとに2番目の列を比較する必要があります。最初の行の2番目の列が2番目の行の2番目の列と一致する場合は一致します。最初の行の2番目の列が2番目の行の2番目の列と一致しない場合、一致はありません。

答え1

1つの方法は次のとおりです。

$ awk '{print} !(NR%2){if($2 == last) print "Match"; else print "Not"} {last = $2}' file
transcr_15824 -
YML042W -
Match
transcr_18545 -
YCR105W +
Not
transcr_16934 +
YDR032C +
Match
transcr_15237 +
YDL008W -
Not

答え2

perl -pae '($_ .= <>) .= qw/NO MATCH/[0+/\n.*\s\Q$F[1]\E$/] . $/'  input

自動分割モードでPerlを実行します。 2番目のフィールドは$ F [1]で、itzに一致があるかどうかによって、次の行<>で比較され、現在の行$_に追加されます。

関連情報