Bash 如何在terminal中每隔n个字符向大文件添加一行(一行)?
我错过了什么 file.txt:Bash 如何在terminal中每隔n个字符向大文件添加一行(一行)?,bash,shell,text,sed,replace,Bash,Shell,Text,Sed,Replace,我错过了什么 file.txt: ABCDEFGHIJKLMNOPQRSTUVWXYZ > sed "s/.\{3\}/&\n/g" < file.txt > new-file.txt ABC DEF ... VWX YZ 终端中: ABCDEFGHIJKLMNOPQRSTUVWXYZ > sed "s/.\{3\}/&\n/g" < file.txt > new-file.txt ABC DEF ... VWX YZ 预期结果:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
> sed "s/.\{3\}/&\n/g" < file.txt > new-file.txt
ABC
DEF
...
VWX
YZ
终端中:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
> sed "s/.\{3\}/&\n/g" < file.txt > new-file.txt
ABC
DEF
...
VWX
YZ
预期结果:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
> sed "s/.\{3\}/&\n/g" < file.txt > new-file.txt
ABC
DEF
...
VWX
YZ
一种方法是在键入
sed
命令时显式地按Enter键:
$ sed 's/.\{3\}/&\
/g' < file.txt > new-file.txt
$ cat new-file.txt
ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
YZ
$sed's/\{3\}/&
/g'new-file.txt
$cat new-file.txt
基础知识
DEF
GHI
JKL
MNO
PQR
斯图
VWX
YZ
使用sed
:
或者使用grep
:
结果:
以下内容最终为我工作:
perl -0777 -pe 's/(.{3})/\1\n/sg' < file.txt > new-file.txt
perl-0777-pe's/(.{3})/\1\n/sg'new-file.txt
仍然不知道为什么原来的不起作用
感谢您的帮助。请使用bash:
while read -n 3 chars; do printf "%s\n" "$chars"; done < file.txt > new-file.txt
读取时-n 3个字符;是否打印“%s\n”$chars;完成new-file.txt
gnu coreutil是一个选项,尽管根据您的输入文件可能不太正确。这将换行,使行长度不超过w
个字符,例如:
$当我在linux机器上使用GNU-sed运行它时,您的代码实际上给出了预期的结果。嗯…。\o/这是唯一一个也能够分割连续输入的答案(例如cat/dev/random | base64 | dd cbs=10 conv=unblock
),这几乎可以工作。如果剩下的字符数少于X,则从结尾处删除。我不理解您的评论:echo 1234568790 |读取时-n3 a;做回显“$a”;完成
——这是否没有给出预期的输出?我没有看到任何掉下来的煤块。