做一个尾部-F直到匹配一个模式(没有错误)

时间:2013-10-27 16:57:06

标签: macos bash shell sed tail

我有一条从this thread起作用的行,它将文件拖尾,直到找到匹配的模式。它运作良好,但我找不到一种方法来抑制之后发生的输出。 该行是:

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

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

总是用下面的结尾而不是没有结束:
sh:第10行:14285终止:15 sh -c'tail -n +0 -f $ logfile | {sed“/ EOF / q”&&杀死$$;}'

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

3 个答案:

答案 0 :(得分:0)

你实际上可以丢弃这样的stderr:

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

答案 1 :(得分:0)

表示文件(例如日志)

sed -u "/pattern/ q" YourFile

用于管道

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

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

答案 2 :(得分:0)

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

nomonitor() {
    set +m
    "$@"
    set -m
}
nomonitor sh -c 'tail -n +0 -f $logfile | { sed "/EOF/ q" && kill $$; }'