如何在文字檔案中的兩列之間放置逗號

如何在文字檔案中的兩列之間放置逗號

這是我的文字檔:

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

相關內容