watch -n 1 tail -n 200 log/site_dev.log | grep Doctrine
但是它没有运行,因为“我认为”是grep试图在手表上而不是在表尾上运行...
有没有办法做类似的事情
watch -n 1 (tail -n 200 log/site_dev.log | grep Doctrine)
非常感谢!
#1 楼
用引号将命令引起来watch -n 1 'tail -n 200 log/site_dev.log | fgrep Doctrine'
#2 楼
我可能是错的,但是这样难道不是更简单地实现相同的功能(查看匹配的日志行)吗?评论
我同意就CPU而言,这可能更有效,但是在主题“使用带有管道的监视”的上下文中,它不使用监视,因此不是答案。这可能是一个糟糕的示例问题,因为手表和烟斗似乎经常出现在尾巴的背景下。
–tu-Reinstate Monica-dor duh
2014年1月20日,0:07
不,我认为您在混淆手段和目的。用户清楚地希望看到Doctrine收到越来越多的文件,而当他在工具箱中查看时,发现的唯一东西就是手表。他真正需要知道的是tail -f。另请参阅meta.stackexchange.com/questions/66377/what-is-the-xy-problem
– dland
16-3-21在11:03
我认为这些都是可接受的答案。最常见的答案正确地回答了提出的确切问题,并且此答案正确地标识了OP为自己创建的XY问题,并首先提供了他们真正想要的解决方案。对于遇到这个问题的人,这两个答案都可能非常有用。
– cdhowie
16-4-14在16:14
我一直在寻找观看shellcheck * .sh的方法| grep行| wc -l和可接受的答案对我很有用。
– Amedee Van Gasse
17年1月3日,12:29
#3 楼
您可以在命令前后加上引号: br />watch -n 1 'tail -n 200 log/site_dev.log | fgrep Doctrine'
如果您想做一些非常聪明的事情,请将一个或多个命令放在脚本中并与watch一起使用:
watch -n 1 $'tail -n 200 log/site_dev.log | fgrep \'Doctrine.*\''
必要时请确保考虑相对路径。
#4 楼
在watch
正在执行命令时,请使用双引号:watch "ls -la | wc -l"
评论
如果管道还包含引号(例如awk'{print $ 3}')怎么办?编辑:像这样
–橙色狗
18年6月6日在16:28
您可以使用\逃脱这些字符,即观看-n'awk \'{print $ 3} \''
–lev
18/09/21在10:44