2列マージ

2列マージ

input_file(列はタブで区切られ、列4にのみスペースが含まれています)

入力する

A B C D;<>X;<>Y 0
C D E F;<>Z;<>X 1

出力

A B C D;<>X;<>Y;<>apple=0
C D E F;<>Z;<>X;<>apple=1

input_fileの最後の列を2番目から最後の列とマージし、最後の列の値を「;」で区切りたいと思います。 2番目から最後の列には「apple =」というラベルがあります(4番目の列と同様)。入力ファイル)。したがって、output_fileには1つの列がありません。フォーマットされた出力ファイルの整合性も維持する必要があります。すべての列はタブで区切られていますが、列4の値にもスペース(D; <> X; <> Y)があるためです。

したがって、入力ファイルのすべてのフィールド区切り文字を保持し、2番目の列の最後の列値のみをラベル(apple =)とマージしようとします。ありがとう

ベストアンサー1

最後のフィールドを変更し、最後のフィールドを削除します。

$ awk '{$(NF-1)=$(NF-1)";<>apple="$NF;$NF="";}1' OFS="\t" file

おすすめ記事