gpt4 book ai didi

linux - 仅替换特定列中的字符 (CSV)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:51:48 24 4
gpt4 key购买 nike

我有这样的数据:

1;2015-04-10;23:10:00;10.4.2015 23:10;8.9;1007.5;0.3;0.0;0;55
2;2015-04-10;23:20:00;10.4.2015 23:20;8.6;1007.8;0.4;0.0;0;56
3;2015-04-10;23:30:00;10.4.2015 23:30;8.5;1008.1;0.4;0.0;0;57

它有点 . 作为小数点分隔符,但我需要使用 , 代替。

所需数据:

1;2015-04-10;23:10:00;10.4.2015 23:10;8,9;1007,5;0,3;0,0;0;55

我尝试使用 Sed。使用 sed -i 's/\./,/g' myfile.csv 我可以用逗号替换所有点,但会破坏第四列中的日期。如何将其他地方的点更改为逗号,但保持第四列不变?如果其他一些 Linux 工具比 Sed 更适合这项任务,我也可以使用它。

最佳答案

sed 用于简单的替换,对于任何其他只需使用 awk:

$ awk 'BEGIN{FS=OFS=";"} {for (i=5;i<=NF;i++) sub(/\./,",",$i)} 1' file
1;2015-04-10;23:10:00;10.4.2015 23:10;8,9;1007,5;0,3;0,0;0;55
2;2015-04-10;23:20:00;10.4.2015 23:20;8,6;1007,8;0,4;0,0;0;56
3;2015-04-10;23:30:00;10.4.2015 23:30;8,5;1008,1;0,4;0,0;0;57

关于linux - 仅替换特定列中的字符 (CSV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30578219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com