如何在Linux中的文件的某些列中添加空格

Roz*_*zer 3 ubuntu sed awk text-processing command

我有一个包含以下格式的 1000 行的文本文件:

001122 abc def ghi
334455 xyz aaa bbb
667788 ccc ccc ddd
Run Code Online (Sandbox Code Playgroud)

如何使用 Linux 命令通过向某些列添加空格将其转换为这种格式?

00 11 22 abc def ghi
33 44 55 xyz aaa bbb
66 77 88 ccc ccc ddd
Run Code Online (Sandbox Code Playgroud)

Kus*_*nda 5

天真但直接:

$ sed 's/\(..\)\(..\)\(..\)/\1 \2 \3/' file
00 11 22 abc def ghi
33 44 55 xyz aaa bbb
66 77 88 ccc ccc ddd
Run Code Online (Sandbox Code Playgroud)

即匹配并收集每行两个字符的前三组,并通过在替换字符串中插入空格将它们隔开。

花哨但需要思考:

$ sed 's/../ &/3; s/../ &/2' file
00 11 22 abc def ghi
33 44 55 xyz aaa bbb
66 77 88 ccc ccc ddd
Run Code Online (Sandbox Code Playgroud)

第一个表达式用..空格替换每一行的第 3 个匹配项,后跟..匹配项。再说一次,但对于第二场比赛。