当通过管道传输到 tee 时,sed 的输出会提前中断
Output of sed is cut off early when piped to tee
我预计:
cat file.txt | sed s/a/b/ > /tmp/tmp.txt && sudo cp /tmp/tmp.txt file.txt
和
cat file.txt | sed s/a/b/ | sudo tee file.txt > /dev/null
在 file.txt
中产生相同的结果,但由于某些原因,当 file.txt
相当大(见 10 000 000 字节)时,file.txt
的结果写入在 262 144 处被截断字节与第二个片段 (2).
我希望这里有某种缓冲在起作用,但我希望第二个代码段能够工作。还是我弄错了管道 cat
、sed
和 tee
的工作方式?
想法是 file.txt
是 root 拥有的,因此我需要对 tee
命令执行 sudo 才能写回该位置。
我预计:
cat file.txt | sed s/a/b/ > /tmp/tmp.txt && sudo cp /tmp/tmp.txt file.txt
和
cat file.txt | sed s/a/b/ | sudo tee file.txt > /dev/null
在 file.txt
中产生相同的结果,但由于某些原因,当 file.txt
相当大(见 10 000 000 字节)时,file.txt
的结果写入在 262 144 处被截断字节与第二个片段 (2).
我希望这里有某种缓冲在起作用,但我希望第二个代码段能够工作。还是我弄错了管道 cat
、sed
和 tee
的工作方式?
想法是 file.txt
是 root 拥有的,因此我需要对 tee
命令执行 sudo 才能写回该位置。