2013-02-27 49 views
0

我试图按照经尾-f一个日志文件,并使用grep对其进行筛选:格式化从尾部输出-f

tail -f <log-file> | grep -F '<some string>'

我所要的输出在同一条线路进行更新,而不是在 stdout上获取新行。这意味着每当grep找到匹配时,stdout中只有一行输出发生更改。

我试图过滤新行,分别添加一个带有几个命令如prinft, sed, awk, echo回车,但没有得到它的工作。 我在AIX计算机上,因此不支持grep或其他命令的每个联机帮助选项。

感谢您的帮助!

回答

0

尝试这样做:

tail -f <logfile> | awk '/some string/{system("");printf "\r%s", $0}' 

system("")是一个小黑客以避免缓冲。

+0

作品,但仍显示在标准输出 – 2013-02-27 17:38:22

+0

不适合我多行。只有一条线。也许使用bash而不是另一个shell – 2013-02-27 18:00:08

+0

我目前使用bash。也许这是AIX的问题? – 2013-02-28 09:04:50

0

您是否已安装watch?如果我明白你问的(我不知道我做了),你可以运行这样的事情:

watch "tail -f <log-file> | grep -F '<some string>'"

+0

不幸的是,我没有文件权限才能使用手表,系统告诉我。 – 2013-02-27 17:39:27

+0

手表需要特殊许可,我感到有点惊讶。你能复制和粘贴你得到的错误信息吗? – twm 2013-02-27 17:58:37

+0

也许我描述它有点不精确,问题似乎是我的权限不允许使用watch binary本身: watch --help - > -bash:/ usr/sbin/watch:文件访问权限不允许指定的操作。 – 2013-02-28 09:00:25