coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: feature request: tail -H


From: Pádraig Brady
Subject: Re: feature request: tail -H
Date: Thu, 1 Oct 2015 17:07:53 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0

On 30/09/15 12:45, Stephen Shirley wrote:
> Hi,
> Here's the scenario: you're in a directory of updating log files
> (could be /var/log), and you want to watch all files for specific
> keywords. For a single file, "tail -F file | grep keyword" is
> sufficient, but if you want to watch multiple files, "tail -F file1
> file2 file3 | grep keyword" is much less helpful because you have no
> way of knowing which log file the matching text is from.
> 
> My suggestion is to add a -H flag (convention taken from grep -H aka
> --with-filename) to tail. With -H specified, tail would no longer
> print out headers before file contents, it would instead prefix the
> line with the file name. With this, "tail -HF file1 file2 file3 | grep
> keyword" is useful, because you get the filename included in the
> matching lines.
> 
> The workaround i've come up with in the meantime is:
> 
>   tail -F "$@" | awk '/^$/ {next} /^==>/ {prefix=$2; next} {print
> prefix ": " $0}'
> 
> but it's a bit of a hack; there's no way to be sure that a header
> string is actually a header, and not part of the file contents.

I like that. It would be similar to the grep option: -H, --with-filename

You could do it with something like:

  $ tail -f .bashrc .vimrc | grep --line-buffered -e'^==> .* <==$' -e 'gco'
  ==> .bashrc <==
  alias gco='git checkout'
  ==> .vimrc <==

However that would impact counting, and show redundant headers.

thanks for the suggestion.
Pádraig




reply via email to

[Prev in Thread] Current Thread [Next in Thread]