col2からcol1の文字列値を減算し、col2を埋めます。

col2からcol1の文字列値を減算し、col2を埋めます。

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

MASTER          APP                        SET       STATUS
max_mstr_ref    max_mstr_ref_horizon_biz   pp_script     true
max_mstr_ref    max_mstr_ref_horizon_biz   pp_scrpt_1    false
max_retl_len    max_retl_len_bddm_biz      px_script     true
min_min_ref     min_min_ref_HZ_Null        ap_script_2   false
...

私がしなければならないのは、列2から重複したプレフィックス値を削除することですmax_mstr_ref。 2列の値から1列の値を減算し、結果として2列を埋める必要があるようです。これはファイル内の各レコードに対して動的に実行する必要があります。max_retl_lenmin_min_ref

いくつawkか試してみましたが、まだかなり短いです。

ベストアンサー1

これはどうですか

awk '{sub($1"_", "", $2); printf("%s %s %s %s\n", $1, $2, $3, $4)}' _input_file_

これは、最初のフィールドを正規表現として使用して、2番目のフィールドから削除します。次に、4つのフィールドを印刷します。私はあなたがそれをしたくないと思うので、正規表現に「_」を含めました。 printf 形式の文字列を調整して、出力を美しくすることができます。

おすすめ記事