Bash Shell内置读取

Bash Shell内置读取,bash,macos,solaris,ksh,aix,Bash,Macos,Solaris,Ksh,Aix,我试图模仿Linuxsplit-C20MB实现 使用ksh/bash内置读取。read/readarray/mapfile会占用字节数,因此拆分的输出文件可能会以不完整的行结束,从而导致输出损坏 如何从输入文件中读取接近20mb的字节而不中断行? (AIX、Solaris和MacOS split未实现“-C”选项,因此请求)您的答案可通过bash的内置帮助命令获得: $ help read read: read ... [-n nchars] [-N nchars] ... [name ...]

我试图模仿Linux
split-C20MB
实现 使用ksh/bash内置读取。read/readarray/mapfile会占用字节数,因此拆分的输出文件可能会以不完整的行结束,从而导致输出损坏

如何从输入文件中读取接近20mb的字节而不中断行?
(AIX、Solaris和MacOS split未实现“-C”选项,因此请求)

您的答案可通过bash的内置帮助命令获得:

$ help read
read: read ... [-n nchars] [-N nchars] ... [name ...]
...
  -n nchars return after reading NCHARS characters rather than waiting
            for a newline, but honor a delimiter if fewer than NCHARS
            characters are read before the delimiter
  -N nchars return only after reading exactly NCHARS characters, unless
            EOF is encountered or read times out, ignoring any delimiter

read-N$((20*1024*1024))
应该允许您一次读取20Mb,忽略换行符。

StackOverflow是帮助人们修复现有编程代码。编辑您的Q以显示示例输入/输出,以及您在编码问题解决方案方面的最佳尝试。很抱歉,对教程、研究、工具、建议、库和代码的请求已脱离主题。在这里发布更多Qs之前,请阅读、、和。好的luckRead一行,将其写入输出文件,将行长度添加到总变量中。当总数接近20mb时,启动一个新文件并将总数重置为0。或者您可以从GNU coreutils安装
split