bash - 如何在所有超过 8 位的号码的 4 位后插入逗号
问题描述
我有看起来像这样的 csv 文件:
12625,6475,387,-388,-332,-217,-104,17,125,160,121,38,-101,-282,-368
-2675,6475,420,-385,-330,-217,-106,16,124,158,120,37,-104,-281,-365
2725,6475,633,-377,-327,-222,-117,6,113,148,109,26,-114,-282,-359
-12775,6475,927,-367,-324,-229,-133,-9,99,134,95,11,-128,-283,-351
12825,64751200,-357,-320,-236,-147,-23,86,121,82,-3,-140,-283,-344
^ missing comma
在某些行中,我遇到了示例最后一行中显示的问题,其中第二列和第三列之间缺少逗号。我从数据中知道,合法条目最多可以有 5 个数字(在某些情况下,前面有一个 -),所有有 8 个数字的条目都来自缺少的逗号,逗号应该出现在第四个数字之后。
我正在查看一个表达式 - 大概是sed
- 在文件中所有 8 位数字的第四位数字之后插入一个逗号。
到目前为止我所拥有的是
echo "12356" | sed 's/\B[0-9]\{3\}/&,/g'
这将在四位数字后插入一个逗号。如何过滤以使这种情况仅发生在 8 位数字上,而不是 5 位数字上。
我也对可能存在的解决该问题的任何更优雅的方式持开放态度。
谢谢
解决方案
尝试这个sed
sed -E 's/([0-9]{4})([0-9]{4})/\1,\2/g'
推荐阅读
- nuxt.js - Nuxt.js 创建页面,可用于唯一特定的语言环境(我自己定义)
- php - Woocommerce html 产品描述或带有产品 ID 的简短描述短代码
- machine-learning - 评估协同过滤
- r - 在所有方面添加相同的密度图
- vba - VBA ListBox - 所选值返回空白
- django - 如何在没有任何模板标签的情况下在 django 中使用 sql 数据,例如我只有一个数据
- visual-studio - Win 中的 Docker(Linux 容器):docker-compose 命令在 Visual Studio 之外以某种方式失败
- excel - 获取打开文件名 VBA
- javascript - 我想从数组的一个元素中截断文本
- javascript - Graphql 变异返回值