将`split`实用程序的输出发送到stdout

eca*_*one 5 bash split stdout

这个问题中,我找到了splitutilty,它接受一个文件并将其分成大小均匀的块.默认情况下,它将这些块输出到新文件,但我想将它输出到stdout,由换行符(或任意分隔符)分隔.这可能吗?

我试过了 cat testfile.txt | split -b 128 - /dev/stdout

因错误而失败split: /dev/stdoutaa: Permission denied.

看一下帮助文本,似乎这告诉split使用/ dev/stdout作为文件名的前缀,而不是写入/ dev/stdout本身.它不表示使用分隔符直接写入单个文件的任何选项.有没有办法可以欺骗split这样做,还是有不同的实用工具可以实现我想要的行为?

lar*_*sks 5

目前尚不清楚你想要做什么,但也许--filter可以选择split:

   --filter=COMMAND
          write to shell COMMAND; file name is $FILE
Run Code Online (Sandbox Code Playgroud)

也许你可以直接使用它.例如,这将一次读取一个10字节的文件,通过tr命令传递每个块:

split -b 10 --filter "tr [:lower:] [:upper:]" afile
Run Code Online (Sandbox Code Playgroud)

如果你真的想在stdout上发出一个在块之间有分隔符的流,你可以这样做:

split -b 10 --filter 'dd 2> /dev/null; echo ---sep---' afile
Run Code Online (Sandbox Code Playgroud)

如果afile我当前目录中的文件如下所示:

the quick brown fox jumped over the lazy dog.
Run Code Online (Sandbox Code Playgroud)

然后上面的命令将导致:

the quick ---sep---
brown fox ---sep---
jumped ove---sep---
r the lazy---sep---
 dog.
---sep---
Run Code Online (Sandbox Code Playgroud)