4桁が見つかったら、csvで数字と次の行の値を印刷します。

4桁が見つかったら、csvで数字と次の行の値を印刷します。

CSV形式のデータがあります。

125867569,98652343,7012,879456217,20121221,7065,758964231,856421345   

私が望む出力:

7012,879456217,7065,758964231  

どうすればいいですか?

ベストアンサー1

次の操作が実行されます。

awk -F, '{for (i=1;i<NF-1;i++) if (length($i)==4 && int($i)==$i) printf("%s,%s,", $i,$(i+1))}' input_file

,不要な内容を削除して出力に改行を追加する「絶対過剰」バージョンが必要な場合は、次のことを試してください。

awk -F, '{if (g) printf("\n"); f=0; for (i=1;i<NF-1;i++) if (length($i)==4 && int($i)==$i) {if (f) printf(","); else f=1; printf("%s,%s", $i,$(i+1)); g=1}} END{if (g) printf("\n")}' input_file

おすすめ記事