gpt4 book ai didi

regex - VI - 如何替换第 6 个逗号和第 9 个逗号之间的文本

转载 作者:行者123 更新时间:2023-12-05 09:35:15 25 4
gpt4 key购买 nike

在VIM中,如何使用正则表达式或其他技巧去除多行以下文本的第6个逗号和第9个逗号之间的句号?

变化自: 4,Afghanistan,2,Medium,1951,1951.5,4134.756,3705.395,7840.151,12.0094,Afghanistan,5,Constant fertility,2023,2023.5,21628.67,20554.282,42182.952,64.613

收件人:
4,Afghanistan,2,Medium,1951,1951.5,4134756,3705395,7840151,12.0094,Afghanistan,5,Constant fertility,2023,2023.5,2162867,20554282,42182952,64.613

我有一个包含许多类似记录的 csv 文件。由于第 6 个和第 9 个逗号的位置可能不在同一列中,我无法使用逐 block 视觉模式来删除这些句点。

一种方法是在 excel 中将逗号拆分为列,并在 excel 的列中替换它。但是我的 csv 文件超过 100 MB,而且我的电脑速度太慢,无法执行。

根据我的 vi 和正则表达式知识,我可以使用下面的正则表达式来定位第 6 个逗号的位置,但这还不够。
/\([^,]*,\)\{-6}

是否有任何高级正则表达式用法来删除多行 csv 文件中第 6 个逗号和第 9 个逗号之间的句点?

最佳答案

正如评论中所建议的,您可以像这样使用一个简单的 awk:

awk 'BEGIN {FS=OFS=","} {for (i=7; i<=9; ++i) sub(/\./, "", $i)} 1' file.csv

4,Afghanistan,2,Medium,1951,1951.5,4134756,3705395,7840151,12.009
4,Afghanistan,5,Constant fertility,2023,2023.5,2162867,20554282,42182952,64.613

关于regex - VI - 如何替换第 6 个逗号和第 9 个逗号之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65987049/

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