Передайте их в командной строке и укажите в сценарии $ 1
, $ 2
и т. Д.
Предполагая, что первая запятая не является ошибкой после 7 символов, а следующие кратны 6, я предлагаю
sed 's/\(.......\)\(......\)\(......\)/\1,\2,\3,/'
$ sed -E 's/(.{7})(.{6})(.{6})(.{6})/\1,\2,\3,\4/' file
0019121,002313,002316,003135
0057936,000814,000814,003023
0081638,001519,001523,001176
0090531,001841,001842,002633
0111210,001515,001518,000912
0115400,001807,001828,001593
То есть сопоставьте биты каждой строки, которая составляет новые поля, и вставьте запятую в -между ними. Сопоставление поля выполняется с помощью .{7}
или .{6}
в зависимости от требуемой длины поля.
С помощью GNU awk(gawk
)вы можете задать явную ширину полей:
$ gawk '{$1=$1} 1' FIELDWIDTHS='7 6 6 6' OFS=, file
0019121,002313,002316,003135
0057936,000814,000814,003023
0081638,001519,001523,001176
0090531,001841,001842,002633
0111210,001515,001518,000912
0115400,001807,001828,001593