linux - 在第二个字符后面每三个字符后插入一个空格

标签 linux unix sed

我需要在两个字符后插入一个空格,然后每三个字符后插入一个空格。

数据:

97100101101102101

预期输出:

97 100 101 101 102 101

尝试的代码:

sed 's/.\{2\}/& /3g'

最佳答案

分两步:

$ sed -r -e 's/^.{2}/& /' -e 's/[^ ]{3}/& /g' <<< 97100101101102101
97 100 101 101 102 101 

即:

  • 's/^.{2}/&/'
    捕获该行中的前两个字符并在其后打印一个空格。

  • 's/[^ ]{3}/&/g'
    捕获三个连续的非空格字符并将它们打印回来后跟一个空格。

关于linux - 在第二个字符后面每三个字符后插入一个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37879803/

相关文章:

linux - bash getopts 验证选项

linux - 检查文件是否在循环中创建,如果不是,则在下一次迭代时再次创建

c - 如何知道链接到二进制可执行文件的调试符号文件的名称和/或路径?

string - UNIX 巴什 : extracting number from string

linux - 如何使用 shell 脚本将文本文件转换为 JSON 文件

mysql - linux下不安装可以运行 "mysqld"吗?

unix - 如何使用命令行合并多个文本文件?

unix - lsof 的非零退出代码

bash - Sed 在 bash 脚本中不工作

regex - 如何删除所有不以某些字符开头的行?