Text-Processing
使用 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
使用符合 POSIX 的
awk
:awk -F, -v OFS=, '{sub(/.{6}$/, OFS "&", $2); print}'
使用符合 POSIX 的
sed
:sed 's/^\([^,]*,[^,]*\)\([^,]\{6\}\)/\1,\2/'
僅當第二個欄位至少有 6 個字元長時才修改行(請注意,它會很高興地更改
111,123456,333
為111,,123456,333
將第二個欄位留空)。
KISS 方法,使用
awk
:$ awk -F, '{l=length($2); if (l>6) {$2=substr($2,1,l-6) OFS substr($2,l-5)}} 1' OFS=, file 3102017,90,131112,0,740 3022017,8,903944,90,0 3092017,127,037191,475,0