Grep: Difference between revisions

From wikinotes
 
(2 intermediate revisions by the same user not shown)
Line 19: Line 19:
   -v  `# lines-not matching` \
   -v  `# lines-not matching` \
   -E  `# extended regex` \
   -E  `# extended regex` \
  -P  `# (gnu-only) perl extended regex (supports lookahead/behind)` \
</source>
</source>


Line 26: Line 27:
</source>
</source>
</blockquote><!-- Usage -->
</blockquote><!-- Usage -->
= Regex =
<blockquote>
== Perl ==
<blockquote>
only available in gnu grep via <code>-P</code>, this supports lookahead/lookbehind.
match lines
<syntaxhighlight lang="bash">
xrandr | grep -P '(?<!dis)connected'  # negative lookbehind
xrandr | grep -P '(?<=dis)connected'  # positive lookehind
</syntaxhighlight>
extract regex groups
<syntaxhighlight lang="bash">
xrandr | grep -P '\d+x\d+' -o          # extract resolutions(ex: 1920x1080) from every line in xrandr
</syntaxhighlight>
</blockquote><!-- Perl  -->
</blockquote><!-- Regex -->

Latest revision as of 02:08, 19 July 2021

Search file contents.

Documentation

man grep https://manpages.debian.org/buster/grep/grep.1.en.html

Usage

grep <dir> \
  -C3  `# show 3x lines before/after each match` \
  -l   `# show only matched files` \
  -i   `# case insensitive search` \
  -v   `# lines-not matching` \
  -E   `# extended regex` \
  -P   `# (gnu-only) perl extended regex (supports lookahead/behind)` \

multiline grep

grep -Pzo 'def[^\n]+\n\tfoo'

Regex

Perl

only available in gnu grep via -P, this supports lookahead/lookbehind.

match lines

xrandr | grep -P '(?<!dis)connected'   # negative lookbehind
xrandr | grep -P '(?<=dis)connected'   # positive lookehind

extract regex groups

xrandr | grep -P '\d+x\d+' -o          # extract resolutions(ex: 1920x1080) from every line in xrandr