我试图使用tail检查文件中的新行,然后使用sed在每个新行前添加一些内容,然后将输出打印到标准输出。
的问题是,添加一个新行到文件后,该行不打印,但前一个来代替。
我是Linux菜鸟。到目前为止,我尝试将sed的输出传递给另一个程序,例如echo,printf,cat,更多,更少,但是这些都不起作用。
我还尝试在sed字符串的末尾添加“ p”作为模式标志,但这会使每个字符串打印两次。
tail -F /usr/local/logs/myfile.log | sed -e "s/^/[hostname:$HOSTNAME]
[file:myfile.log] /"
我打开另一个终端并输入:
echo "test1" >> /usr/local/logs/myfile.log
(什么都没有发生,我希望打印带有“ test1”的消息)
echo "test2" >> /usr/local/logs/myfile.log
(打印[hostname:5b1dc0d27a45] [file:myfile.log] test1
,我希望是“ test2”)
如果我只使用尾部,而不sed的,被适当地显示每个新行 - 但当然不与我想要的东西预先考虑
答案 0 :(得分:0)
您将尾巴用于跟随模式。因此,sed的输入未关闭。为了优化,输出以块(缓冲的)或最后完成。 sed -u ...
应该会有所帮助:它将输出模式更改为 unbuffered 。