カンマ区切りフィールドの変更

カンマ区切りフィールドの変更

入力する:

1,012018,111
2,1-2018,111
3,10-2018,111

出力:

1,01/2018,111
2,01/2018,111
3,10/2018,111

月と年をmm / yyyyに編集する効果をどのように取得できますか?

ベストアンサー1

GNU Awkを使用して、patsplit2番目のカンマ区切りフィールドを最大2桁の小数のサブフィールドに分割します。

$ gawk 'BEGIN{OFS=FS=","} {patsplit($2,a,/[0-9][0-9]?/); $2 = sprintf("%02d/%d%d", a[1], a[2], a[3])} 1' file
1,01/2018,111
2,01/2018,111
3,10/2018,111

Perlがオプションの場合

perl -F, -lpe '
  $F[1] =~ s{(\d\d?)-?(\d+)}{sprintf "%02d/%d", $1, $2}e; 
  $_ = join ",", @F
' file

おすすめ記事