awkは現在と以下を比較します。

awkは現在と以下を比較します。

私の入力ファイルは次のとおりです

     puloto_cluster_b_02_sys
puloto_cluster_b_02_sys puloto_cluster_b_generic_cg
        puloto_cluster_b_02_temp
        puloto_cluster_b_04_sys
puloto_cluster_b_04_sys puloto_cluster_b_generic_cg
        puloto_cluster_b_04_temp
        puloto_cluster_b_06_sys
puloto_cluster_b_06_sys puloto_cluster_b_generic_cg
        puloto_cluster_b_08_sys
puloto_cluster_b_08_sys puloto_cluster_b_generic_cg
        puloto_cluster_b_10_sys
puloto_cluster_b_10_sys puloto_cluster_b_generic_cg

私の出力は次のようになりたいです。

puloto_cluster_b_02_sys puloto_cluster_b_generic_cg
puloto_cluster_b_02_temp
puloto_cluster_b_04_sys puloto_cluster_b_generic_cg
puloto_cluster_b_04_temp
puloto_cluster_b_06_sys puloto_cluster_b_generic_cg
puloto_cluster_b_08_sys puloto_cluster_b_generic_cg
puloto_cluster_b_10_sys puloto_cluster_b_generic_cg

つまり、現在のレコード($1)を次のレコード($1)と比較して、次のレコードのみを印刷します。一致する項目がない場合は、現在の項目を印刷します。

ベストアンサー1

Awk解決策:

awk '{
         items++;
         if ($1 == f1) { print; items = 0 }
         else if (items == 2) { sub(/^[[:space:]]*/, "", prev); print prev; items-- }
     }
     { prev = $0; f1 = $1 }' file

出力:

puloto_cluster_b_02_sys puloto_cluster_b_generic_cg
puloto_cluster_b_02_temp
puloto_cluster_b_04_sys puloto_cluster_b_generic_cg
puloto_cluster_b_04_temp
puloto_cluster_b_06_sys puloto_cluster_b_generic_cg
puloto_cluster_b_08_sys puloto_cluster_b_generic_cg
puloto_cluster_b_10_sys puloto_cluster_b_generic_cg

おすすめ記事