我在这里缺少什么?
file.txt的:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
终端:
> sed "s/.\{3\}/&\n/g" < file.txt > new-file.txt
结果:new-file.txt
ABCnDEFnGHInJKLnMNOnPQRnSTUnVWXnYZ
预期结果:
ABC
DEF
...
VWX
YZ
答案 0 :(得分:6)
sed
:$ sed 's/.../&\n/g' file.txt
grep
:$ grep -oE '.{1,3}' file.txt
ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
YZ
答案 1 :(得分:4)
$ echo abcdefghi | dd cbs=3 conv=unblock 2>/dev/null
abc
def
ghi
答案 2 :(得分:2)
只是使用bash:
while read -n 3 chars; do printf "%s\n" "$chars"; done < file.txt > new-file.txt
答案 3 :(得分:1)
执行此操作的一种方法是在键入sed
命令时显式单击 Enter 键:
$ sed 's/.\{3\}/&\
/g' < file.txt > new-file.txt
$ cat new-file.txt
ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
YZ
答案 4 :(得分:0)
以下结果为我工作:
perl -0777 -pe 's/(.{3})/\1\n/sg' < file.txt > new-file.txt
仍然不确定为什么原版不起作用。
感谢您的帮助。
答案 5 :(得分:0)
一个选项,虽然可能不完全正确,具体取决于你的输入文件是gnu coreutil fold
。这将包装行,使得没有行长度超过w
个字符,例如:
$ <<< 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' fold -w3
ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
YZ