Sem*_*lon 4 sed io-redirection
我正在通过 sed 从时钟输出管道以从数字中删除前导零。它看起来像这样:
clock -sf 'S%A, %B %d. %I:%M %P' | sed 's/\b0\+\([0-9]\+\)/\1/g'
Run Code Online (Sandbox Code Playgroud)
这工作正常并产生我想要的输出。
但是,当我尝试将输出重定向到文件时,文件中没有写入任何内容。以下不起作用。
clock -sf 'S%A, %B %d. %I:%M %P' | sed 's/\b0\+\([0-9]\+\)/\1/g' > testfile
Run Code Online (Sandbox Code Playgroud)
没有任何内容写入测试文件。我究竟做错了什么?
您遇到了输出缓冲问题。sed
通常在不写入终端时缓冲其输出,因此在缓冲区填满之前不会将任何内容写入文件(可能每 4K 字节)。
使用-u
选项sed
来取消缓冲输出。
clock -sf 'S%A, %B %d. %I:%M %P' | sed -u 's/\b0\+\([0-9]\+\)/\1/g' > testfile
Run Code Online (Sandbox Code Playgroud)