如何在文件中的固定数量的字符后插入新的行字符

ran*_*alo 30 bash sed

我正在寻找一个bash或sed脚本(最好是一行代码),我可以在巨大的文本文件中使用固定数量的字符后插入一个新行字符.

Kri*_*ian 43

这样的事怎么样?更改20是换行符之前的字符数,temp.text是要替换的文件.

sed -e "s/.\{20\}/&\n/g" < temp.txt
Run Code Online (Sandbox Code Playgroud)

  • 如果文件包含'〜'字符,则失败 (2认同)

小智 36

这是POSIX解决方案:

awk '{gsub(/.{5}/,"&\n")}1' file
Run Code Online (Sandbox Code Playgroud)

要么:

fold -w5 file
Run Code Online (Sandbox Code Playgroud)

输入:

banana strawberry grape
Run Code Online (Sandbox Code Playgroud)

输出:

banan
a str
awber
ry gr
ape
Run Code Online (Sandbox Code Playgroud)

有趣的是,Awk解决方案比折叠更高效.

  • `fold`应该是正确的答案.`man fold`给`包装每条输入线以适合指定的宽度`.它完美地回答了这个问题! (5认同)
  • 我已经看到这尝试了几十种不同的方式,但总有特殊情况,版本差异,其他问题,或解决方案只是简单的不优雅.`fold`绝对是*正确的工具.+1 (4认同)