尾-f | sed 到文件不起作用
tail -f | sed to file doesn't work
我在过滤正在写入的日志文件并将输出写入另一个文件时遇到问题(如果可能,使用 tee
,这样我可以看到它正在运行)。
我可以使用 tee
或 >>
将其输出到标准输出,但不能写入文件。
我也可以让它写入文件,但前提是我从 tail 中删除 -f
选项,这是我需要的。
所以,这里是命令的概述:
tail -f
不写入文件:tail -f test.log | sed 's/a/b/'
works
tail
写入文件:tail test.log | sed 's/a/b/' | tee -a a.txt
有效
tail -f
写入文件:tail -f test.log | sed 's/a/b/' | tee -a a.txt
不在标准输出上输出也不写入文件.
我想 3. 工作。
这是sed
缓冲。使用 sed -u
。 man sed
:
-u, --unbuffered
load minimal amounts of data from the input files and flush the
output buffers more often
这是一个测试(创建文件 foo
和 bar
):
$ for i in {1..3} ; do echo a $i ; sleep 1; done >> foo &
[1] 12218
$ tail -f foo | sed -u 's/a/b/' | tee -a bar
b 1
b 2
b 3
要快或增加 {1..3}
以适应您的技能。
我在过滤正在写入的日志文件并将输出写入另一个文件时遇到问题(如果可能,使用 tee
,这样我可以看到它正在运行)。
我可以使用 tee
或 >>
将其输出到标准输出,但不能写入文件。
我也可以让它写入文件,但前提是我从 tail 中删除 -f
选项,这是我需要的。
所以,这里是命令的概述:
tail -f
不写入文件:tail -f test.log | sed 's/a/b/'
workstail
写入文件:tail test.log | sed 's/a/b/' | tee -a a.txt
有效tail -f
写入文件:tail -f test.log | sed 's/a/b/' | tee -a a.txt
不在标准输出上输出也不写入文件.
我想 3. 工作。
这是sed
缓冲。使用 sed -u
。 man sed
:
-u, --unbuffered
load minimal amounts of data from the input files and flush the
output buffers more often
这是一个测试(创建文件 foo
和 bar
):
$ for i in {1..3} ; do echo a $i ; sleep 1; done >> foo &
[1] 12218
$ tail -f foo | sed -u 's/a/b/' | tee -a bar
b 1
b 2
b 3
要快或增加 {1..3}
以适应您的技能。