0

我有一条从这个线程工作的线,它跟踪一个文件,直到找到匹配的模式。它运作良好,但我找不到抑制之后发生的输出的方法。该行是:

sh -c 'tail -n +0 -f $logfile | { sed "/EOF/ q" && kill $$ ;}'

管道到 /dev/null 不起作用,因为我根本没有从 tail 命令获得任何输出。另外,我在 OSX 上,由于语法原因,其他各种 sed 和 awk 建议都不起作用。

它总是以以下内容结束,而不是什么都没有:
sh: line 10: 14285 Terminated: 15 sh -c 'tail -n +0 -f $logfile | { sed "/EOF/q" && 杀 $$ ;}'

我也不想显示匹配的文本(上例中的 EOF)。欢迎任何建议。

4

3 回答 3

0

对于文件(例如日志)

sed -u "/pattern/ q" YourFile

对于管道

ls -l | sed -u "/pattern/ q"

sed 的 -u 告诉它作为流输入工作

于 2013-10-29T13:28:32.367 回答
0

您实际上可以像这样丢弃标准错误:

sh -c 'tail -n +0 -f $logfile | { sed "/EOF/q" && p=$$ && kill $((p+1)) ; }'
于 2013-10-27T17:43:05.243 回答
0

这是 shell 监控弹出消息的工作。

nomonitor() {
    set +m
    "$@"
    set -m
}
nomonitor sh -c 'tail -n +0 -f $logfile | { sed "/EOF/ q" && kill $$; }'
于 2013-10-29T16:00:19.500 回答