find / -name my\*balls | xargs grep -e batman -e robocop

On Mon, Feb 21, 2011 at 1:34 PM, Pascal Stumpf <pascal.stu...@cubes.de>
wrote:
> Implement a -H flag for grep, useful for combining e.g. find and grep.
>
> Can anyone commit it?
>
> Index: grep.1
> ===================================================================
> RCS file: /cvs/src/usr.bin/grep/grep.1,v
> retrieving revision 1.39
> diff -u -r1.39 grep.1
> --- grep.1      3 Sep 2010 11:09:28 -0000       1.39
> +++ grep.1      21 Feb 2011 12:29:41 -0000
> @@ -38,7 +38,7 @@
>  .Sh SYNOPSIS
>  .Nm grep
>  .Bk -words
> -.Op Fl abcEFGhIiLlnqRsUVvwxZ
> +.Op Fl abcEFGHhIiLlnqRsUVvwxZ
>  .Op Fl A Ar num
>  .Op Fl B Ar num
>  .Op Fl C Ns Op Ar num
> @@ -184,6 +184,10 @@
>  .Nm grep
>  to behave as traditional
>  .Nm grep ) .
> +.It Fl H
> +Always print filename headers
> +.Pq i.e. filenames
> +with output lines.
>  .It Fl h
>  Never print filename headers
>  .Pq i.e. filenames
> @@ -349,7 +353,7 @@
>  specification.
>  .Pp
>  The flags
> -.Op Fl AaBbCGhILRUVwZ
> +.Op Fl AaBbCGHhILRUVwZ
>  are extensions to that specification, and the behaviour of the
>  .Fl f
>  flag when used with an empty pattern file is left undefined.
> Index: grep.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/grep/grep.c,v
> retrieving revision 1.42
> diff -u -r1.42 grep.c
> --- grep.c      2 Jul 2010 22:18:03 -0000       1.42
> +++ grep.c      21 Feb 2011 12:29:41 -0000
> @@ -62,6 +62,7 @@
>  int     Eflag;         /* -E: interpret pattern as extended regexp */
>  int     Fflag;         /* -F: interpret pattern as list of fixed strings
*/
>  int     Gflag;         /* -G: interpret pattern as basic regexp */
> +int     Hflag;         /* -H: always print filename header */
>  int     Lflag;         /* -L: only show names of files with no matches */
>  int     Rflag;         /* -R: recursively search directory trees */
>  #ifndef NOZ
> @@ -106,9 +107,9 @@
>  {
>        fprintf(stderr,
>  #ifdef NOZ
> -           "usage: %s [-abcEFGhIiLlnqRsUVvwx] [-A num] [-B num]
[-C[num]]\n"
> +           "usage: %s [-abcEFGHhIiLlnqRsUVvwx] [-A num] [-B num]
[-C[num]]\n"
>  #else
> -           "usage: %s [-abcEFGhIiLlnqRsUVvwxZ] [-A num] [-B num]
[-C[num]]\n"
> +           "usage: %s [-abcEFGHhIiLlnqRsUVvwxZ] [-A num] [-B num]
[-C[num]]\n"
>  #endif
>            "\t[-e pattern] [-f file] [--binary-files=value]
[--context[=num]]\n"
>            "\t[--line-buffered] [pattern] [file ...]\n", __progname);
> @@ -116,9 +117,9 @@
>  }
>
>  #ifdef NOZ
> -static char *optstr = "0123456789A:B:CEFGILRUVabce:f:hilnqrsuvwxy";
> +static char *optstr = "0123456789A:B:CEFGHILRUVabce:f:hilnqrsuvwxy";
>  #else
> -static char *optstr = "0123456789A:B:CEFGILRUVZabce:f:hilnqrsuvwxy";
> +static char *optstr = "0123456789A:B:CEFGHILRUVZabce:f:hilnqrsuvwxy";
>  #endif
>
>  struct option long_options[] =
> @@ -134,6 +135,7 @@
>        {"extended-regexp",     no_argument,            NULL, 'E'},
>        {"fixed-strings",       no_argument,            NULL, 'F'},
>        {"basic-regexp",        no_argument,            NULL, 'G'},
> +       {"with-filename",       no_argument,            NULL, 'H'},
>        {"binary",              no_argument,            NULL, 'U'},
>        {"version",             no_argument,            NULL, 'V'},
>        {"text",                no_argument,            NULL, 'a'},
> @@ -315,6 +317,9 @@
>                        Eflag = Fflag = 0;
>                        Gflag++;
>                        break;
> +               case 'H':
> +                       Hflag++;
> +                       break;
>                case 'I':
>                        binbehave = BIN_FILE_SKIP;
>                        break;
> @@ -476,7 +481,7 @@
>        if (lbflag)
>                setlinebuf(stdout);
>
> -       if ((argc == 0 || argc == 1) && !Rflag)
> +       if ((argc == 0 || argc == 1) && !Rflag && !Hflag)
>                hflag = 1;
>
>        if (argc == 0)
> Index: grep.h
> ===================================================================
> RCS file: /cvs/src/usr.bin/grep/grep.h,v
> retrieving revision 1.15
> diff -u -r1.15 grep.h
> --- grep.h      5 Apr 2010 03:03:55 -0000       1.15
> +++ grep.h      21 Feb 2011 12:29:41 -0000
> @@ -63,7 +63,7 @@
>  extern int      cflags, eflags;
>
>  /* Command line flags */
> -extern int      Aflag, Bflag, Eflag, Fflag, Gflag, Lflag,
> +extern int      Aflag, Bflag, Eflag, Fflag, Gflag, Hflag, Lflag,
>                 Rflag, Zflag,
>                 bflag, cflag, hflag, iflag, lflag, nflag, qflag, sflag,
>                 vflag, wflag, xflag;

Reply via email to