텍스트 파일의 두 열 사이에 쉼표를 넣는 방법

텍스트 파일의 두 열 사이에 쉼표를 넣는 방법

이것은 내 텍스트 파일입니다.

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,/'

관련 정보