AWK を使用して、最後の n 文字で部分文字列を新しい列に分割します。

AWK を使用して、最後の n 文字で部分文字列を新しい列に分割します。

大きなファイルがあり、.csv特定の列を文字列の長さに分割する必要があります。 2列の最後の6文字を取得して新しい列に移動しようとします。

現在の:

3102017,90131112,0,740
3022017,8903944,90,0
3092017,127037191,475,0

予想される:

3102017,90,131112,0,740
3022017,8,903944,90,0
3092017,127,037191,475,0

ベストアンサー1

POSIX互換awk:

awk -F, -v OFS=, '{sub(/.{6}$/, OFS "&", $2); print}'

POSIX互換sed:

sed 's/^\([^,]*,[^,]*\)\([^,]\{6\}\)/\1,\2/'

2番目のフィールドの長さが6文字以上の場合にのみ行を変更します(2番目のフィールドを空白のままにする111,123456,333ことに注意してください)。111,,123456,333

おすすめ記事