Как поставить запятую между двумя столбцами в текстовом файле

Как поставить запятую между двумя столбцами в текстовом файле

Это мой текстовый файл:

0019121002313002316003135  
0057936000814000814003023  
0081638001519001523001176  
0090531001841001842002633  
0111210001515001518000912  
0115400001807001828001593

Я хочу получить обработанный вывод как:

0019121,002313,002316,003135
0057936,000814,000814,003023
0081638,001519,001523,001176
0090531,001841,001842,002633
0111210,001515,001518,000912
0115400,001807,001828,001593

Как мне это сделать?

решение1

$ 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}в зависимости от желаемой длины поля.

решение2

С помощью 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

ВидетьОбработка данных фиксированной ширины

решение3

Если предположить, что это не ошибка, что первая запятая стоит после 7 символов, а следующие — через кратные 6, то я предлагаю

sed 's/\(.......\)\(......\)\(......\)/\1,\2,\3,/'

Связанный контент