我需要在两个字符之后插入一个空格,然后在每三个字符之后插入一个空格。
数据:
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] 举报,一经查实,本站将立刻删除。