diff options
| author | Damian Bogel <damian.bogel@gmail.com> | 2013-05-14 15:08:53 +0200 |
|---|---|---|
| committer | Richard Lowe <richlowe@richlowe.net> | 2013-09-13 15:16:32 -0400 |
| commit | 41599e9fdccb44cc5f17828ab04b3147cefcc4e0 (patch) | |
| tree | d9436585e9226721f83c7877855092e2230e17ad | |
| parent | ea76c26cbb46a2abd6ae5d4bdfaa26e32a405633 (diff) | |
| download | illumos-joyent-41599e9fdccb44cc5f17828ab04b3147cefcc4e0.tar.gz | |
3737 grep does not support -H option
3759 egrep(1) and fgrep(1) -s flag does not hide -c output
Reviewed by: Albert Lee <trisk@nexenta.com>
Reviewed by: Andy Stormont <andyjstormont@gmail.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
| -rw-r--r-- | usr/src/cmd/egrep/egrep.y | 58 | ||||
| -rw-r--r-- | usr/src/cmd/fgrep/fgrep.c | 81 | ||||
| -rw-r--r-- | usr/src/cmd/grep/grep.c | 35 | ||||
| -rw-r--r-- | usr/src/cmd/grep_xpg4/grep.c | 47 | ||||
| -rw-r--r-- | usr/src/man/man1/egrep.1 | 46 | ||||
| -rw-r--r-- | usr/src/man/man1/fgrep.1 | 48 | ||||
| -rw-r--r-- | usr/src/man/man1/grep.1 | 19 |
7 files changed, 206 insertions, 128 deletions
diff --git a/usr/src/cmd/egrep/egrep.y b/usr/src/cmd/egrep/egrep.y index 95e071ebb9..8068dc447e 100644 --- a/usr/src/cmd/egrep/egrep.y +++ b/usr/src/cmd/egrep/egrep.y @@ -32,9 +32,9 @@ /* Copyright (c) 1987, 1988 Microsoft Corporation */ /* All Rights Reserved */ -%{ -#pragma ident "%Z%%M% %I% %E% SMI" -%} +/* + * Copyright 2013 Damian Bogel. All rights reserved. + */ /* * egrep -- print lines containing (or not containing) a regular expression @@ -61,6 +61,8 @@ #include <limits.h> #include <locale.h> +#define STDIN_FILENAME gettext("(standard input)") + #define BLKSIZE 512 /* size of reported disk blocks */ #define EBUFSIZ 8192 #define MAXLIN 350 @@ -110,11 +112,12 @@ int bflag; int cflag; int eflag; int fflag; +int Hflag; int hflag; int iflag; int lflag; int nflag; -int sflag; +int qflag; int vflag; int nfile; long long blkno; @@ -644,7 +647,7 @@ follow(int v) } } -#define USAGE "[ -bchilnsv ] [ -e exp ] [ -f file ] [ strings ] [ file ] ..." +#define USAGE "[ -bchHilnsqv ] [ -e exp ] [ -f file ] [ strings ] [ file ] ..." int main(int argc, char **argv) @@ -660,7 +663,7 @@ main(int argc, char **argv) #endif (void) textdomain(TEXT_DOMAIN); - while((c = getopt(argc, argv, "ybcie:f:hlnvs")) != -1) + while((c = getopt(argc, argv, "ybcie:f:Hhlnvsq")) != -1) switch(c) { case 'b': @@ -686,8 +689,15 @@ main(int argc, char **argv) } continue; + case 'H': + if (!lflag) /* H is excluded by l as in GNU grep */ + Hflag++; + hflag = 0; /* H excludes h */ + continue; + case 'h': hflag++; + Hflag = 0; /* h excludes H */ continue; case 'y': @@ -697,14 +707,16 @@ main(int argc, char **argv) case 'l': lflag++; + Hflag = 0; /* l excludes H */ continue; case 'n': nflag++; continue; - case 's': - sflag++; + case 'q': + case 's': /* Solaris: legacy option */ + qflag++; continue; case 'v': @@ -799,16 +811,16 @@ execute(char *file) return; } } else { - file = "<stdin>"; f = stdin; + file = STDIN_FILENAME; } lnum = 1; tln = 0; if((count = read(fileno(f), buf, EBUFSIZ)) <= 0) { fclose(f); - if (cflag) { - if (nfile>1 && !hflag) + if (cflag && !qflag) { + if (Hflag || (nfile > 1 && !hflag)) fprintf(stdout, "%s:", file); fprintf(stdout, "%lld\n", tln); } @@ -902,19 +914,19 @@ execute(char *file) break; } } - if(succ) { + if (succ) { nsucc = 1; - if (cflag) tln++; - else if (sflag) - ; /* ugh */ - else if (lflag) { - printf("%s\n", file); + if (lflag || qflag) { + if (!qflag) + (void) printf("%s\n", file); fclose(f); return; } - else { - if (nfile > 1 && !hflag) - printf(gettext("%s:"), file); + if (cflag) { + tln++; + } else { + if (Hflag || (nfile > 1 && !hflag)) + printf("%s:", file); if (bflag) { nchars = blkno - (buf + count - ptrend) - 2; if(nlflag) @@ -944,9 +956,9 @@ execute(char *file) clearg(); } fclose(f); - if (cflag) { - if (nfile > 1 && !hflag) - printf(gettext("%s:"), file); + if (cflag && !qflag) { + if (Hflag || (nfile > 1 && !hflag)) + printf("%s:", file); printf("%lld\n", tln); } } diff --git a/usr/src/cmd/fgrep/fgrep.c b/usr/src/cmd/fgrep/fgrep.c index 20be258cfa..31724cda40 100644 --- a/usr/src/cmd/fgrep/fgrep.c +++ b/usr/src/cmd/fgrep/fgrep.c @@ -30,7 +30,9 @@ /* Copyright (c) 1987, 1988 Microsoft Corporation */ /* All Rights Reserved */ -#pragma ident "%Z%%M% %I% %E% SMI" +/* + * Copyright 2013 Damian Bogel. All rights reserved. + */ /* * fgrep -- print all lines containing any of a set of keywords @@ -107,6 +109,7 @@ wchar_t letter(); (a == b || iflag && (!MULTI_BYTE || ISASCII(a)) && (a ^ b) == ' ' && \ letter(a) == letter(b)) +#define STDIN_FILENAME gettext("(standard input)") #define QSIZE 400 struct words { @@ -119,8 +122,8 @@ struct words { FILE *fptr; long long lnum; -int bflag, cflag, lflag, fflag, nflag, vflag, xflag, eflag, sflag; -int hflag, iflag; +int bflag, cflag, lflag, fflag, nflag, vflag, xflag, eflag, qflag; +int Hflag, hflag, iflag; int retcode = 0; int nfile; long long blkno; @@ -150,14 +153,20 @@ main(int argc, char **argv) #endif (void) textdomain(TEXT_DOMAIN); - while ((c = getopt(argc, argv, "hybcie:f:lnvxs")) != EOF) + while ((c = getopt(argc, argv, "Hhybcie:f:lnvxqs")) != EOF) switch (c) { - case 's': - sflag++; + case 'q': + case 's': /* Solaris: legacy option */ + qflag++; + continue; + case 'H': + Hflag++; + hflag = 0; continue; case 'h': hflag++; + Hflag = 0; continue; case 'b': bflag++; @@ -183,17 +192,17 @@ main(int argc, char **argv) wordf = fopen(optarg, "r"); if (wordf == NULL) { (void) fprintf(stderr, - gettext("fgrep: can't open %s\n"), - optarg); + gettext("fgrep: can't open %s\n"), + optarg); exit(2); } if (fstat(fileno(wordf), &file_stat) == 0) { - input_size = file_stat.st_size; + input_size = file_stat.st_size; } else { (void) fprintf(stderr, - gettext("fgrep: can't fstat %s\n"), - optarg); + gettext("fgrep: can't fstat %s\n"), + optarg); exit(2); } @@ -221,8 +230,8 @@ main(int argc, char **argv) argc -= optind; if (errflg || ((argc <= 0) && !fflag && !eflag)) { - (void) printf(gettext("usage: fgrep [ -bchilnsvx ] " - "[ -e exp ] [ -f file ] [ strings ] [ file ] ...\n")); + (void) printf(gettext("usage: fgrep [ -bcHhilnqsvx ] " + "[ -e exp ] [ -f file ] [ strings ] [ file ] ...\n")); exit(2); } if (!eflag && !fflag) { @@ -250,14 +259,14 @@ main(int argc, char **argv) w = (struct words *)calloc(input_size, sizeof (struct words)); if (w == NULL) { (void) fprintf(stderr, - gettext("fgrep: could not allocate " - "memory for wordlist\n")); + gettext("fgrep: could not allocate " + "memory for wordlist\n")); exit(2); } getwidth(&WW); if ((WIDTH1 == 0) && (WIDTH2 == 0) && - (WIDTH3 == 0)) { + (WIDTH3 == 0)) { /* * If non EUC-based locale, * assume WIDTH1 is 1. @@ -308,13 +317,13 @@ execute(char *file) if (file) { if ((fptr = fopen(file, "r")) == NULL) { (void) fprintf(stderr, - gettext("fgrep: can't open %s\n"), file); + gettext("fgrep: can't open %s\n"), file); retcode = 2; return; } } else { - file = "<stdin>"; fptr = stdin; + file = STDIN_FILENAME; } ccount = 0; failed = 0; @@ -333,7 +342,7 @@ execute(char *file) /* increase the buffer size */ fw_lBufsiz += BUFSIZ; if ((buf = realloc(buf, - fw_lBufsiz + BUFSIZ)) == NULL) { + fw_lBufsiz + BUFSIZ)) == NULL) { exit(2); /* out of memory */ } nlp = buf; @@ -341,8 +350,8 @@ execute(char *file) } else { /* shift the buffer down */ (void) memmove(buf, nlp, - &buf[fw_lBufsiz + BUFSIZ] - - nlp); + &buf[fw_lBufsiz + BUFSIZ] + - nlp); p -= nlp - buf; nlp = buf; } @@ -350,11 +359,11 @@ execute(char *file) } if (p > &buf[fw_lBufsiz]) { if ((ccount = fread(p, sizeof (char), - &buf[fw_lBufsiz + BUFSIZ] - p, fptr)) - <= 0) + &buf[fw_lBufsiz + BUFSIZ] - p, fptr)) + <= 0) break; } else if ((ccount = fread(p, sizeof (char), - BUFSIZ, fptr)) <= 0) + BUFSIZ, fptr)) <= 0) break; blkno += (long long)ccount; } @@ -417,14 +426,16 @@ if (p > &buf[fw_lBufsiz]) { goto nomatch; succeed: nsucc = 1; - if (cflag) - tln++; - else if (lflag && !sflag) { - (void) printf("%s\n", file); + if (lflag || qflag) { + if (!qflag) + (void) printf("%s\n", file); (void) fclose(fptr); return; - } else if (!sflag) { - if (nfile > 1 && !hflag) + } + if (cflag) { + tln++; + } else { + if (Hflag || (nfile > 1 && !hflag)) (void) printf("%s:", file); if (bflag) (void) printf("%lld:", @@ -458,8 +469,8 @@ nomatch: } } (void) fclose(fptr); - if (cflag) { - if ((nfile > 1) && !hflag) + if (cflag && !qflag) { + if (Hflag || (nfile > 1 && !hflag)) (void) printf("%s:", file); (void) printf("%lld\n", tln); } @@ -481,7 +492,7 @@ getargc(void) if ((b = getc(wordf)) == EOF) return (EOF); cw = ISASCII(c = (wchar_t)b) ? 1 : - (ISSET2(c) ? WIDTH2 : (ISSET3(c) ? WIDTH3 : WIDTH1)); + (ISSET2(c) ? WIDTH2 : (ISSET3(c) ? WIDTH3 : WIDTH1)); while (--cw) { if ((b = getc(wordf)) == EOF) return (EOF); @@ -495,7 +506,7 @@ getargc(void) { cw = ISASCII(c = (unsigned char)*argptr++) ? 1 : - (ISSET2(c) ? WIDTH2 : (ISSET3(c) ? WIDTH3 : WIDTH1)); + (ISSET2(c) ? WIDTH2 : (ISSET3(c) ? WIDTH3 : WIDTH1)); while (--cw) c = (c << 7) | ((*argptr++) & 0177); @@ -614,7 +625,7 @@ cfail(void) struct words *s; s = w; if ((queue = (struct words **)calloc(qsize, sizeof (struct words *))) - == NULL) { + == NULL) { perror("fgrep"); exit(2); } diff --git a/usr/src/cmd/grep/grep.c b/usr/src/cmd/grep/grep.c index edc83be3e6..44c91f8271 100644 --- a/usr/src/cmd/grep/grep.c +++ b/usr/src/cmd/grep/grep.c @@ -33,6 +33,10 @@ /* Copyright 2012 Nexenta Systems, Inc. All rights reserved. */ /* + * Copyright 2013 Damian Bogel. All rights reserved. + */ + +/* * grep -- print lines matching (or not matching) a pattern * * status returns: @@ -73,6 +77,8 @@ static const char *errstr[] = { NULL }; +#define STDIN_FILENAME gettext("(standard input)") + #define errmsg(msg, arg) (void) fprintf(stderr, gettext(msg), arg) #define BLKSIZE 512 #define GBUFSIZ 8192 @@ -94,6 +100,7 @@ static int sflag; static int iflag; static int wflag; static int hflag; +static int Hflag; static int qflag; static int errflg; static int nfile; @@ -123,10 +130,17 @@ main(int argc, char **argv) #endif (void) textdomain(TEXT_DOMAIN); - while ((c = getopt(argc, argv, "hqblcnRrsviyw")) != -1) + while ((c = getopt(argc, argv, "hHqblcnRrsviyw")) != -1) switch (c) { + /* based on options order h or H is set as in GNU grep */ case 'h': hflag++; + Hflag = 0; /* h excludes H */ + break; + case 'H': + if (!lflag) /* H is excluded by l */ + Hflag++; + hflag = 0; /* H excludes h */ break; case 'q': /* POSIX: quiet: status only */ qflag++; @@ -154,6 +168,7 @@ main(int argc, char **argv) break; case 'l': lflag++; + Hflag = 0; /* l excludes H */ break; case 'y': case 'i': @@ -167,7 +182,7 @@ main(int argc, char **argv) } if (errflg || (optind >= argc)) { - errmsg("Usage: grep [-c|-l|-q] [-r|-R] -hbnsviw " + errmsg("Usage: grep [-c|-l|-q] [-r|-R] -hHbnsviw " "pattern file . . .\n", (char *)NULL); exit(2); @@ -299,9 +314,10 @@ execute(const char *file, int base) } } - if (file == NULL) + if (file == NULL) { temp = 0; - else if ((temp = open(file + base, O_RDONLY)) == -1) { + file = STDIN_FILENAME; + } else if ((temp = open(file + base, O_RDONLY)) == -1) { if (!sflag) errmsg("grep: can't open %s\n", file); nsucc = 2; @@ -313,7 +329,7 @@ execute(const char *file, int base) (void) close(temp); if (cflag && !qflag) { - if (nfile > 1 && !hflag && file) + if (Hflag || (nfile > 1 && !hflag)) (void) fprintf(stdout, "%s:", file); if (!rflag) (void) fprintf(stdout, "%lld\n", tln); @@ -410,8 +426,8 @@ execute(const char *file, int base) (void) close(temp); if (cflag && !qflag) { - if (!hflag && file && (nfile > 1 || - (rflag && outfn))) + if (Hflag || (!hflag && ((nfile > 1) || + (rflag && outfn)))) (void) fprintf(stdout, "%s:", file); (void) fprintf(stdout, "%lld\n", tln); } @@ -423,9 +439,6 @@ succeed(const char *f) int nchars; nsucc = (nsucc == 2) ? 2 : 1; - if (f == NULL) - f = "<stdin>"; - if (qflag) { /* no need to continue */ return (1); @@ -441,7 +454,7 @@ succeed(const char *f) return (1); } - if (!hflag && (nfile > 1 || (rflag && outfn))) { + if (Hflag || (!hflag && (nfile > 1 || (rflag && outfn)))) { /* print filename */ (void) fprintf(stdout, "%s:", f); } diff --git a/usr/src/cmd/grep_xpg4/grep.c b/usr/src/cmd/grep_xpg4/grep.c index 8bfd8d7ef9..647d91f760 100644 --- a/usr/src/cmd/grep_xpg4/grep.c +++ b/usr/src/cmd/grep_xpg4/grep.c @@ -36,6 +36,10 @@ /* Copyright 2012 Nexenta Systems, Inc. All rights reserved. */ +/* + * Copyright 2013 Damian Bogel. All rights reserved. + */ + #include <string.h> #include <stdlib.h> #include <ctype.h> @@ -54,6 +58,8 @@ #include <ftw.h> #include <sys/param.h> +#define STDIN_FILENAME gettext("(standard input)") + #define BSIZE 512 /* Size of block for -b */ #define BUFSIZE 8192 /* Input buffer size */ #define MAX_DEPTH 1000 /* how deep to recurse */ @@ -80,6 +86,7 @@ static uchar_t egrep = 0; /* Invoked as egrep */ static uchar_t nvflag = 1; /* Print matching lines */ static uchar_t cflag; /* Count of matches */ static uchar_t iflag; /* Case insensitve matching */ +static uchar_t Hflag; /* Precede lines by file name */ static uchar_t hflag; /* Supress printing of filename */ static uchar_t lflag; /* Print file names of matches */ static uchar_t nflag; /* Precede lines by line number */ @@ -155,7 +162,7 @@ main(int argc, char **argv) } } - while ((c = getopt(argc, argv, "vwchilnrbse:f:qxEFIR")) != EOF) { + while ((c = getopt(argc, argv, "vwchHilnrbse:f:qxEFIR")) != EOF) { switch (c) { case 'v': /* POSIX: negate matches */ nvflag = 0; @@ -216,8 +223,16 @@ main(int argc, char **argv) } *(file_list + n_file - 1) = optarg; break; + + /* based on options order h or H is set as in GNU grep */ case 'h': /* Solaris: supress printing of file name */ hflag = 1; + Hflag = 0; + break; + /* Solaris: precede every matching with file name */ + case 'H': + Hflag = 1; + hflag = 0; break; case 'q': /* POSIX: quiet: status only */ @@ -294,6 +309,12 @@ main(int argc, char **argv) usage(); /* + * -l overrides -H like in GNU grep + */ + if (lflag) + Hflag = 0; + + /* * -c, -l and -q flags are mutually exclusive * We have -c override -l like in Solaris. * -q overrides -l & -c programmatically in grep() function. @@ -346,9 +367,9 @@ main(int argc, char **argv) /* Process all files: stdin, or rest of arg list */ if (argc < 2) { - matched = grep(0, gettext("(standard input)")); + matched = grep(0, STDIN_FILENAME); } else { - if (argc > 2 && hflag == 0) + if (Hflag || (argc > 2 && hflag == 0)) outfn = 1; /* Print filename on match line */ for (argv++; *argv != NULL; argv++) { process_path(*argv); @@ -1112,7 +1133,7 @@ L_next_line: break; } if (!cflag) { - if (outfn) { + if (Hflag || outfn) { (void) printf("%s:", fn); } if (bflag) { @@ -1139,7 +1160,7 @@ L_skip_line: } if (cflag) { - if (outfn) { + if (Hflag || outfn) { (void) printf("%s:", fn); } if (!qflag) { @@ -1158,45 +1179,45 @@ usage(void) if (egrep || fgrep) { (void) fprintf(stderr, gettext("Usage:\t%s"), cmdname); (void) fprintf(stderr, - gettext(" [-c|-l|-q] [-r|-R] [-bhinsvx] " + gettext(" [-c|-l|-q] [-r|-R] [-bhHinsvx] " "pattern_list [file ...]\n")); (void) fprintf(stderr, "\t%s", cmdname); (void) fprintf(stderr, - gettext(" [-c|-l|-q] [-r|-R] [-bhinsvx] " + gettext(" [-c|-l|-q] [-r|-R] [-bhHinsvx] " "[-e pattern_list]... " "[-f pattern_file]... [file...]\n")); } else { (void) fprintf(stderr, gettext("Usage:\t%s"), cmdname); (void) fprintf(stderr, - gettext(" [-c|-l|-q] [-r|-R] [-bhinsvwx] " + gettext(" [-c|-l|-q] [-r|-R] [-bhHinsvwx] " "pattern_list [file ...]\n")); (void) fprintf(stderr, "\t%s", cmdname); (void) fprintf(stderr, - gettext(" [-c|-l|-q] [-r|-R] [-bhinsvwx] " + gettext(" [-c|-l|-q] [-r|-R] [-bhHinsvwx] " "[-e pattern_list]... " "[-f pattern_file]... [file...]\n")); (void) fprintf(stderr, "\t%s", cmdname); (void) fprintf(stderr, - gettext(" -E [-c|-l|-q] [-r|-R] [-bhinsvx] " + gettext(" -E [-c|-l|-q] [-r|-R] [-bhHinsvx] " "pattern_list [file ...]\n")); (void) fprintf(stderr, "\t%s", cmdname); (void) fprintf(stderr, - gettext(" -E [-c|-l|-q] [-r|-R] [-bhinsvx] " + gettext(" -E [-c|-l|-q] [-r|-R] [-bhHinsvx] " "[-e pattern_list]... " "[-f pattern_file]... [file...]\n")); (void) fprintf(stderr, "\t%s", cmdname); (void) fprintf(stderr, - gettext(" -F [-c|-l|-q] [-r|-R] [-bhinsvx] " + gettext(" -F [-c|-l|-q] [-r|-R] [-bhHinsvx] " "pattern_list [file ...]\n")); (void) fprintf(stderr, "\t%s", cmdname); (void) fprintf(stderr, - gettext(" -F [-c|-l|-q] [-bhinsvx] [-e pattern_list]... " + gettext(" -F [-c|-l|-q] [-bhHinsvx] [-e pattern_list]... " "[-f pattern_file]... [file...]\n")); } exit(2); diff --git a/usr/src/man/man1/egrep.1 b/usr/src/man/man1/egrep.1 index ce82db2372..9fdf321590 100644 --- a/usr/src/man/man1/egrep.1 +++ b/usr/src/man/man1/egrep.1 @@ -9,40 +9,40 @@ .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License. .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] -.TH EGREP 1 "Mar 24, 2006" +.TH EGREP 1 "May 3, 2013" .SH NAME egrep \- search a file for a pattern using full regular expressions .SH SYNOPSIS .LP .nf -\fB/usr/bin/egrep\fR [\fB-bchilnsv\fR] \fB-e\fR \fIpattern_list\fR [\fIfile...\fR] +\fB/usr/bin/egrep\fR [\fB-bcHhilnqsv\fR] \fB-e\fR \fIpattern_list\fR [\fIfile...\fR] .fi .LP .nf -\fB/usr/bin/egrep\fR [\fB-bchilnsv\fR] \fB-f\fR \fIfile\fR [\fIfile...\fR] +\fB/usr/bin/egrep\fR [\fB-bcHhilnqsv\fR] \fB-f\fR \fIfile\fR [\fIfile...\fR] .fi .LP .nf -\fB/usr/bin/egrep\fR [\fB-bchilnsv\fR] \fIpattern\fR [\fIfile...\fR] +\fB/usr/bin/egrep\fR [\fB-bcHhilnqsv\fR] \fIpattern\fR [\fIfile...\fR] .fi .LP .nf -\fB/usr/xpg4/bin/egrep\fR [\fB-bchilnqsvx\fR] \fB-e\fR \fIpattern_list\fR [\fB-f\fR \fIfile\fR] +\fB/usr/xpg4/bin/egrep\fR [\fB-bcHhilnqsvx\fR] \fB-e\fR \fIpattern_list\fR [\fB-f\fR \fIfile\fR] [\fIfile...\fR] .fi .LP .nf -\fB/usr/xpg4/bin/egrep\fR [\fB-bchilnqsvx\fR] [\fB-e\fR \fIpattern_list\fR] \fB-f\fR \fIfile\fR +\fB/usr/xpg4/bin/egrep\fR [\fB-bcHhilnqsvx\fR] [\fB-e\fR \fIpattern_list\fR] \fB-f\fR \fIfile\fR [\fIfile...\fR] .fi .LP .nf -\fB/usr/xpg4/bin/egrep\fR [\fB-bchilnqsvx\fR] \fIpattern\fR [\fIfile...\fR] +\fB/usr/xpg4/bin/egrep\fR [\fB-bcHhilnqsvx\fR] \fIpattern\fR [\fIfile...\fR] .fi .SH DESCRIPTION @@ -151,6 +151,15 @@ Take the list of \fIfull\fR \fIregular\fR \fIexpressions\fR from \fIfile\fR. .sp .ne 2 .na +\fB\fB-H\fR\fR +.ad +.RS 19n +Precedes each line by the name of the file containing the matching line. +.RE + +.sp +.ne 2 +.na \fB\fB-h\fR\fR .ad .RS 19n @@ -188,11 +197,20 @@ Precede each line by its line number in the file (first line is 1). .sp .ne 2 .na +\fB\fB-q\fR\fR +.ad +.RS 19n +Quiet. Does not write anything to the standard output, regardless of matching +lines. Exits with zero status if an input line is selected. +.RE + +.sp +.ne 2 +.na \fB\fB-s\fR\fR .ad .RS 19n -Work silently, that is, display nothing except error messages. This is useful -for checking the error status. +Legacy equivalent of \fB-q\fR. .RE .sp @@ -211,16 +229,6 @@ The following options are supported for \fB/usr/xpg4/bin/egrep\fR only: .sp .ne 2 .na -\fB\fB-q\fR\fR -.ad -.RS 6n -Quiet. Does not write anything to the standard output, regardless of matching -lines. Exits with zero status if an input line is selected. -.RE - -.sp -.ne 2 -.na \fB\fB-x\fR\fR .ad .RS 6n diff --git a/usr/src/man/man1/fgrep.1 b/usr/src/man/man1/fgrep.1 index a4018c567b..7c254b67ff 100644 --- a/usr/src/man/man1/fgrep.1 +++ b/usr/src/man/man1/fgrep.1 @@ -9,40 +9,40 @@ .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License. .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] -.TH FGREP 1 "Mar 24, 2006" +.TH FGREP 1 "May 3, 2013" .SH NAME fgrep \- search a file for a fixed-character string .SH SYNOPSIS .LP .nf -\fB/usr/bin/fgrep\fR [\fB-bchilnsvx\fR] \fB-e\fR \fIpattern_list\fR [\fIfile...\fR] +\fB/usr/bin/fgrep\fR [\fB-bcHhilnqsvx\fR] \fB-e\fR \fIpattern_list\fR [\fIfile...\fR] .fi .LP .nf -\fB/usr/bin/fgrep\fR [\fB-bchilnsvx\fR] \fB-f\fR \fIfile\fR [\fIfile...\fR] +\fB/usr/bin/fgrep\fR [\fB-bcHhilnqsvx\fR] \fB-f\fR \fIfile\fR [\fIfile...\fR] .fi .LP .nf -\fB/usr/bin/fgrep\fR [\fB-bchilnsvx\fR] \fIpattern\fR [\fIfile...\fR] +\fB/usr/bin/fgrep\fR [\fB-bcHhilnqsvx\fR] \fIpattern\fR [\fIfile...\fR] .fi .LP .nf -\fB/usr/xpg4/bin/fgrep\fR [\fB-bchilnqsvx\fR] \fB-e\fR \fIpattern_list\fR [\fB-f\fR \fIfile\fR] +\fB/usr/xpg4/bin/fgrep\fR [\fB-bcHhilnqsvx\fR] \fB-e\fR \fIpattern_list\fR [\fB-f\fR \fIfile\fR] [\fIfile...\fR] .fi .LP .nf -\fB/usr/xpg4/bin/fgrep\fR [\fB-bchilnqsvx\fR] [\fB-e\fR \fIpattern_list\fR] \fB-f\fR \fIfile\fR +\fB/usr/xpg4/bin/fgrep\fR [\fB-bcHhilnqsvx\fR] [\fB-e\fR \fIpattern_list\fR] \fB-f\fR \fIfile\fR [\fIfile...\fR] .fi .LP .nf -\fB/usr/xpg4/bin/fgrep\fR [\fB-bchilnqsvx\fR] \fIpattern\fR [\fIfile...\fR] +\fB/usr/xpg4/bin/fgrep\fR [\fB-bcHhilnqsvx\fR] \fIpattern\fR [\fIfile...\fR] .fi .SH DESCRIPTION @@ -111,6 +111,15 @@ Takes the list of patterns from \fIpattern-file\fR. .sp .ne 2 .na +\fB\fB-H\fR\fR +.ad +.RS 19n +Precedes each line by the name of the file containing the matching line. +.RE + +.sp +.ne 2 +.na \fB\fB-h\fR\fR .ad .RS 19n @@ -148,43 +157,38 @@ Precedes each line by its line number in the file. The first line is 1. .sp .ne 2 .na -\fB\fB-s\fR\fR +\fB\fB-q\fR\fR .ad .RS 19n -Works silently, that is, displays nothing except error messages. This is useful -for checking the error status. +Quiet. Does not write anything to the standard output, regardless of matching +lines. Exits with zero status if an input line is selected. .RE .sp .ne 2 .na -\fB\fB-v\fR\fR +\fB\fB-s\fR\fR .ad .RS 19n -Prints all lines except those that contain the pattern. +Legacy equivalent of \fB-q\fR. .RE .sp .ne 2 .na -\fB\fB-x\fR\fR +\fB\fB-v\fR\fR .ad .RS 19n -Prints only lines that are matched entirely. +Prints all lines except those that contain the pattern. .RE -.SS "/usr/xpg4/bin/fgrep" -.sp -.LP -The following options are supported for \fB/usr/xpg4/bin/fgrep\fR only: .sp .ne 2 .na -\fB\fB-q\fR\fR +\fB\fB-x\fR\fR .ad -.RS 6n -Quiet. Does not write anything to the standard output, regardless of matching -lines. Exits with zero status if an input line is selected. +.RS 19n +Prints only lines that are matched entirely. .RE .SH OPERANDS diff --git a/usr/src/man/man1/grep.1 b/usr/src/man/man1/grep.1 index 0269a5c7dc..7760dde85a 100644 --- a/usr/src/man/man1/grep.1 +++ b/usr/src/man/man1/grep.1 @@ -10,34 +10,34 @@ .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License. .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] -.TH GREP 1 "Feb 26, 2008" +.TH GREP 1 "May 3, 2013" .SH NAME grep \- search a file for a pattern .SH SYNOPSIS .LP .nf -\fB/usr/bin/grep\fR [\fB-c\fR | \fB-l\fR |\fB-q\fR] [\fB-r\fR | \fB-R\fR] [\fB-bhinsvw\fR] +\fB/usr/bin/grep\fR [\fB-c\fR | \fB-l\fR |\fB-q\fR] [\fB-r\fR | \fB-R\fR] [\fB-bHhinsvw\fR] \fIlimited-regular-expression\fR [\fIfilename\fR]... .fi .LP .nf \fB/usr/xpg4/bin/grep\fR [\fB-E\fR | \fB-F\fR] [\fB-c\fR | \fB-l\fR | \fB-q\fR] [\fB-r\fR | \fB-R\fR] - [\fB-bhinsvwx\fR] \fB-e\fR \fIpattern_list\fR... [\fB-f\fR \fIpattern_file\fR]... + [\fB-bHhinsvwx\fR] \fB-e\fR \fIpattern_list\fR... [\fB-f\fR \fIpattern_file\fR]... [\fIfile\fR]... .fi .LP .nf \fB/usr/xpg4/bin/grep\fR [\fB-E\fR | \fB-F\fR] [\fB-c\fR | \fB-l\fR | \fB-q\fR] [\fB-r\fR | \fB-R\fR] - [\fB-bhinsvwx\fR] [\fB-e\fR \fIpattern_list\fR]... \fB-f\fR \fIpattern_file\fR... + [\fB-bHhinsvwx\fR] [\fB-e\fR \fIpattern_list\fR]... \fB-f\fR \fIpattern_file\fR... [\fIfile\fR]... .fi .LP .nf \fB/usr/xpg4/bin/grep\fR [\fB-E\fR | \fB-F\fR] [\fB-c\fR | \fB-l\fR | \fB-q\fR] [\fB-r\fR | \fB-R\fR] - [\fB-bhinsvwx\fR] \fIpattern\fR [\fIfile\fR]... + [\fB-bHhinsvwx\fR] \fIpattern\fR [\fIfile\fR]... .fi .SH DESCRIPTION @@ -98,6 +98,15 @@ Prints only a count of the lines that contain the pattern. .sp .ne 2 .na +\fB\fB-H\fR\fR +.ad +.RS 6n +Precedes each line by the name of the file containing the matching line. +.RE + +.sp +.ne 2 +.na \fB\fB-h\fR\fR .ad .RS 6n |
