能够转换以下字符串
3.840527449999989,6A3,06,67,07,DF,0D,63,81,AA 4.306243875,601,02,3E,80,00,00,00,00,00
格式化字符串,如下所示
3.840527449999989,6A3,06 67 07 DF 0D 63 81 AA 4.306243875000000,601,02 3E 80 00 00 00 00 00
请注意:
答案 0 :(得分:2)
$ awk -F, '{$1=sprintf("%.15f",$1); for(i=1;i<3;i++) sub(OFS,FS)} 1' file
3.840527449999989,6A3,06 67 07 DF 0D 63 81 AA
4.306243875000000,601,02 3E 80 00 00 00 00 00
答案 1 :(得分:1)
使用printf
:
awk -F, '{printf("%.15f,%s,%s %s %s %s %s %s %s %s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10)}' file
输出:
3.840527449999989,6A3,06 67 07 DF 0D 63 81 AA
4.306243875000000,601,02 3E 80 00 00 00 00 00
答案 2 :(得分:1)
awk
救援!
awk -F, -v OFS=, '{$1=sprintf("%.15f",$1)}1' file | sed 's/,/ /3g'
3.840527449999989,6A3,06 67 07 DF 0D 63 81 AA
4.306243875000000,601,02 3E 80 00 00 00 00 00
sed
(gnu)是用空格替换,
,要在awk
中执行此操作,您必须指定所有具有分隔符的字段(例如,未设置OFS
}和print $1 "," $2 "," $3,$4,$5
等)。
答案 3 :(得分:1)
这可能适合你(GNU sed):
sed ':a;/^[0-9.]\{17\},/!s/,/0,/;ta;s/,/ /3g' file
如果第一个字段不是长度17,请插入0
直到它为止,然后用空格替换第三个,
。
N.B。预先假设第一个字段不长于17,并且该字段是所示类型的编号。此外,记录布局为例,字段2不包含,
,即不是引用字段。