CVSROOT: /webcvs/grep Module name: grep Changes by: Jim Meyering <meyering> 23/03/22 22:55:22
Index: html_node/grep-Programs.html =================================================================== RCS file: /webcvs/grep/grep/manual/html_node/grep-Programs.html,v retrieving revision 1.33 retrieving revision 1.34 diff -u -b -r1.33 -r1.34 --- html_node/grep-Programs.html 3 Sep 2022 19:33:14 -0000 1.33 +++ html_node/grep-Programs.html 23 Mar 2023 02:55:21 -0000 1.34 @@ -1,11 +1,11 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!DOCTYPE html> <html> -<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ --> +<!-- Created by GNU Texinfo 7.0dev, https://www.gnu.org/software/texinfo/ --> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <!-- This manual is for grep, a pattern matching engine. -Copyright (C) 1999-2002, 2005, 2008-2022 Free Software Foundation, +Copyright © 1999-2002, 2005, 2008-2023 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document @@ -14,10 +14,10 @@ Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". --> -<title>grep Programs (GNU Grep 3.8)</title> +<title>grep Programs (GNU Grep 3.10)</title> -<meta name="description" content="grep Programs (GNU Grep 3.8)"> -<meta name="keywords" content="grep Programs (GNU Grep 3.8)"> +<meta name="description" content="grep Programs (GNU Grep 3.10)"> +<meta name="keywords" content="grep Programs (GNU Grep 3.10)"> <meta name="resource-type" content="document"> <meta name="distribution" content="global"> <meta name="Generator" content="makeinfo"> @@ -30,21 +30,10 @@ <link href="Exit-Status.html" rel="prev" title="Exit Status"> <style type="text/css"> <!-- -a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em} -a.summary-letter {text-decoration: none} -blockquote.indentedblock {margin-right: 0em} -div.display {margin-left: 3.2em} +a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em} div.example {margin-left: 3.2em} -kbd {font-style: oblique} -pre.display {font-family: inherit} -pre.format {font-family: inherit} -pre.menu-comment {font-family: serif} -pre.menu-preformatted {font-family: serif} -span.nolinebreak {white-space: nowrap} -span.roman {font-family: initial; font-weight: normal} -span.sansserif {font-family: sans-serif; font-weight: normal} -span:hover a.copiable-anchor {visibility: visible} -ul.no-bullet {list-style: none} +span:hover a.copiable-link {visibility: visible} +ul.mark-bullet {list-style-type: disc} --> </style> <link rel="stylesheet" type="text/css" href="https://www.gnu.org/software/gnulib/manual.css"> @@ -53,66 +42,107 @@ </head> <body lang="en"> -<div class="section" id="grep-Programs"> -<div class="header"> +<div class="section-level-extent" id="grep-Programs"> +<div class="nav-panel"> <p> -Previous: <a href="Exit-Status.html" accesskey="p" rel="prev">Exit Status</a>, Up: <a href="Invoking.html" accesskey="u" rel="up">Invoking <code>grep</code></a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> +Previous: <a href="Exit-Status.html" accesskey="p" rel="prev">Exit Status</a>, Up: <a href="Invoking.html" accesskey="u" rel="up">Invoking <code class="command">grep</code></a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> </div> <hr> -<span id="grep-Programs-1"></span><h3 class="section">2.4 <code>grep</code> Programs</h3> -<span id="index-grep-programs"></span> -<span id="index-variants-of-grep"></span> +<h3 class="section" id="grep-Programs-1"><span>2.4 <code class="command">grep</code> Programs<a class="copiable-link" href="#grep-Programs-1"> ¶</a></span></h3> +<a class="index-entry-id" id="index-grep-programs"></a> +<a class="index-entry-id" id="index-variants-of-grep"></a> -<p><code>grep</code> searches the named input files +<p><code class="command">grep</code> searches the named input files for lines containing a match to the given patterns. -By default, <code>grep</code> prints the matching lines. -A file named <samp>-</samp> stands for standard input. -If no input is specified, <code>grep</code> searches the working -directory <samp>.</samp> if given a command-line option specifying -recursion; otherwise, <code>grep</code> searches standard input. -There are four major variants of <code>grep</code>, +By default, <code class="command">grep</code> prints the matching lines. +A file named <samp class="file">-</samp> stands for standard input. +If no input is specified, <code class="command">grep</code> searches the working +directory <samp class="file">.</samp> if given a command-line option specifying +recursion; otherwise, <code class="command">grep</code> searches standard input. +There are four major variants of <code class="command">grep</code>, controlled by the following options. </p> -<dl compact="compact"> -<dt id='index-_002dG'><span><samp>-G</samp><a href='#index-_002dG' class='copiable-anchor'> ¶</a></span></dt> -<dt><span><samp>--basic-regexp</samp></span></dt> -<dd><span id="index-_002d_002dbasic_002dregexp"></span> -<span id="index-matching-basic-regular-expressions"></span> +<dl class="table"> +<dt><samp class="option">-G</samp></dt> +<dt><samp class="option">--basic-regexp</samp></dt> +<dd><a class="index-entry-id" id="index-_002dG"></a> +<a class="index-entry-id" id="index-_002d_002dbasic_002dregexp"></a> +<a class="index-entry-id" id="index-matching-basic-regular-expressions"></a> <p>Interpret patterns as basic regular expressions (BREs). This is the default. </p> </dd> -<dt id='index-_002dE'><span><samp>-E</samp><a href='#index-_002dE' class='copiable-anchor'> ¶</a></span></dt> -<dt><span><samp>--extended-regexp</samp></span></dt> -<dd><span id="index-_002d_002dextended_002dregexp"></span> -<span id="index-matching-extended-regular-expressions"></span> +<dt><samp class="option">-E</samp></dt> +<dt><samp class="option">--extended-regexp</samp></dt> +<dd><a class="index-entry-id" id="index-_002dE"></a> +<a class="index-entry-id" id="index-_002d_002dextended_002dregexp"></a> +<a class="index-entry-id" id="index-matching-extended-regular-expressions"></a> <p>Interpret patterns as extended regular expressions (EREs). -(<samp>-E</samp> is specified by POSIX.) +(<samp class="option">-E</samp> is specified by POSIX.) </p> </dd> -<dt id='index-_002dF'><span><samp>-F</samp><a href='#index-_002dF' class='copiable-anchor'> ¶</a></span></dt> -<dt><span><samp>--fixed-strings</samp></span></dt> -<dd><span id="index-_002d_002dfixed_002dstrings"></span> -<span id="index-matching-fixed-strings"></span> +<dt><samp class="option">-F</samp></dt> +<dt><samp class="option">--fixed-strings</samp></dt> +<dd><a class="index-entry-id" id="index-_002dF"></a> +<a class="index-entry-id" id="index-_002d_002dfixed_002dstrings"></a> +<a class="index-entry-id" id="index-matching-fixed-strings"></a> <p>Interpret patterns as fixed strings, not regular expressions. -(<samp>-F</samp> is specified by POSIX.) +(<samp class="option">-F</samp> is specified by POSIX.) </p> </dd> -<dt id='index-_002dP'><span><samp>-P</samp><a href='#index-_002dP' class='copiable-anchor'> ¶</a></span></dt> -<dt><span><samp>--perl-regexp</samp></span></dt> -<dd><span id="index-_002d_002dperl_002dregexp"></span> -<span id="index-matching-Perl_002dcompatible-regular-expressions"></span> +<dt><samp class="option">-P</samp></dt> +<dt><samp class="option">--perl-regexp</samp></dt> +<dd><a class="index-entry-id" id="index-_002dP"></a> +<a class="index-entry-id" id="index-_002d_002dperl_002dregexp"></a> +<a class="index-entry-id" id="index-matching-Perl_002dcompatible-regular-expressions"></a> <p>Interpret patterns as Perl-compatible regular expressions (PCREs). PCRE support is here to stay, but consider this option experimental when -combined with the <samp>-z</samp> (<samp>--null-data</samp>) option, and note that -‘<samp>grep -P</samp>’ may warn of unimplemented features. -See <a href="Other-Options.html">Other Options</a>. +combined with the <samp class="option">-z</samp> (<samp class="option">--null-data</samp>) option, and note that +‘<samp class="samp">grep -P</samp>’ may warn of unimplemented features. +See <a class="xref" href="Other-Options.html">Other Options</a>. </p> +<p>For documentation, refer to <a class="url" href="https://www.pcre.org/">https://www.pcre.org/</a>, with these caveats: +</p><ul class="itemize mark-bullet"> +<li>‘<samp class="samp">\d</samp>’ matches only the ten ASCII digits +(and ‘<samp class="samp">\D</samp>’ matches the complement), regardless of locale. +Use ‘<samp class="samp">\p{Nd}</samp>’ to also match non-ASCII digits. + +<p>When <code class="command">grep</code> is built with PCRE2 10.42 and earlier, +‘<samp class="samp">\d</samp>’ and ‘<samp class="samp">\D</samp>’ ignore in-regexp directives like ‘<samp class="samp">(?aD)</samp>’ +and work like ‘<samp class="samp">[0-9]</samp>’ and ‘<samp class="samp">[^0-9]</samp>’ respectively. +However, later versions of PCRE2 likely will fix this, +and the plan is for <code class="command">grep</code> to respect those directives if possible. +</p> +</li><li>Although PCRE tracks the syntax and semantics of Perl’s regular +expressions, the match is not always exact, partly because Perl +evolves and a Perl installation may predate or postdate the PCRE2 +installation on the same host. + +</li><li>By default, <code class="command">grep</code> applies each regexp to a line at a time, +so the ‘<samp class="samp">(?s)</samp>’ directive (making ‘<samp class="samp">.</samp>’ match line breaks) +is generally ineffective. +However, with <samp class="option">-z</samp> (<samp class="option">--null-data</samp>) it can work: +<div class="example"> +<pre class="example-preformatted">$ printf 'a\nb\n' |grep -zP '(?s)a.b' +a +b +</pre></div> +<p>But beware: with the <samp class="option">-z</samp> (<samp class="option">--null-data</samp>) and a file +containing no NUL byte, grep must read the entire file into memory +before processing any of it. +Thus, it will exhaust memory and fail for some large files. +</p></li></ul> + </dd> </dl> </div> +<hr> +<div class="nav-panel"> +<p> +Previous: <a href="Exit-Status.html">Exit Status</a>, Up: <a href="Invoking.html">Invoking <code class="command">grep</code></a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> +</div>
