微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在第二个字符后面插入一个空格,后面跟三个字符

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

数据:

97100101101102101

预期产出:

97 100 101 101 102 101

尝试代码

如何使脚本执行git pull?

文件格式:使用awk NRvariables混淆

ALSA:我怎样才能通过耳机和扬声器发送audio

CLOCKS_PER_SEC未声明(首次在此函数中使用)

Python – 如何在gtk.Window(如webkit.WebView())中加载Google Chrome或Chromium浏览器?

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

编译embedded式Linux发行版软件(openwrt)

如何让Git在Linux上将CRLF文件转换为LF?

直接访问linux framebuffer – copyarea

如果STDOUT缓冲区溢出,会发生什么情况

如何捕获远程系统networkingstream量?

分两步进行:

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

那是:

's/^.{2}/& /'

赶上行中的前两个字符,然后用空格将它们打印回来。

's/[^ ]{3}/& /g'

抓住三个连续的非空格字符,然后再打印一个空格。

用GNU awk:

$ echo '97100101101102101' | awk '{print substr($0,1,2) gensub(/.{3}/," &","g",substr($0,3))}' 97 100 101 101 102 101

请注意,与目前接受的sed解决方案不同,这不会在行的末尾添加空白字符,例如,使用_而不是空白来使问题可见:

$ echo '97100101101102101' | sed -r -e 's/^.{2}/&_/' -e 's/[^_]{3}/&_/g' 97_100_101_101_102_101_ $ echo '97100101101102101' | awk '{print substr($0,"_&",3))}' 97_100_101_101_102_101

即使输入包含空白字符,它也可以工作:

$ echo '971 0101101102101' | sed -r -e 's/^.{2}/& /' -e 's/[^ ]{3}/& /g' 97 1 010 110 110 210 1 $ echo '971 0101101102101' | awk '{print substr($0,3))}' 97 1 0 101 101 102 101

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐