Saturday, July 2, 2016

14 Practical examples of the grep command

http://www.librebyte.net/en/gnulinux/14-practical-examples-of-the-grep-command

grep is a command-line utility that allows searching of words and/or patterns in a file or group of files. Its name comes from the ed command g/re/p (globally search a regular expression and print). Grep does a global search by keyword or regular expression and print all matching lines on the standard output.

General syntax

$ grep [OPTIONS] PATTERN [FILE...]
$ grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
In the second form you can specify more than one pattern using several times the -e switch or reading the pattern from a file (-f)
Basic options:
  • -c: Count the number of matches.
  • -E: Interpret PATTERN as an extended regular expression.
  • -f: Gets the patterns from a file, one per line.
  • -i: Case insensitive search.
  • -l: Print the name of each input file where matches are found.
  • -n: Prefix the line number where matches are found.
  • -o: Prints only the part that matches.
  • -v: Invert the sense of matching, to select non-matching lines.
GNU extensions:
  • –color: highlight the word that matches with the color specified in the variable of environment GREP_COLOR, red by default
  • -r,-R: Read all files under each directory, recursively
Note: all options are not covered
From the file: tools.txt, which contains the following lines:
Grep was originally developed for the Unix operating system.
GNU GREP was written from scratch for the GNU operating system.
ngrep is a network packet analyzer written by Jordan Ritter.
find is a command-line utility that searches one or more directory trees of a file system.
The  top  program  provides a dynamic real-time view of a running system.
xargs - build and execute command lines from standard input.
We’ve developed the following examples:

1. Case sensitive search

$ grep Grep tools.txt 
Grep was originally developed for the Unix operating system.

2. Case insentive search

$ grep -i Grep tools.txt 
Grep was originally developed for the Unix operating system.
GNU GREP was written from scratch for the GNU operating system.
ngrep is a network packet analyzer written by Jordan Ritter.

3. Count the number of matches (case sensitive)

$ grep -c Grep tools.txt 
1

4. Count the number of matches (case insensitive)

$ grep -ic Grep tools.txt 
3

5. Prefix line number

$  grep -in Grep tools.txt 
1:Grep was originally developed for the Unix operating system.
2:GNU GREP was written from scratch for the GNU operating system.
3:ngrep is a network packet analyzer written by Jordan Ritter.

6. Only the part that match

$ grep -io Grep tools.txt 
Grep
GREP
grep

7. Find lines containing xargs or top

$ grep -E 'xargs|top' tools.txt 
The  top  program  provides a dynamic real-time view of a running system.
xargs - build and execute command lines from standard input

8. Find lines that containing Grep (case insentive) and GNU (case sentive)

$ grep -i grep tools.txt | grep GNU 
GNU GREP was written from scratch for the GNU operating system.

9. Find all lines that don’t match grep

$ grep -iv grep tools.txt 
find is a command-line utility that searches one or more directory trees of a file system.
The  top  program  provides a dynamic real-time view of a running system.
xargs - build and execute command lines from standard input

10. Specify multiple patterns

Find all lines containing find or GNU
$ grep -e find -e GNU tools.txt 
GNU GREP was written from scratch for the GNU operating system.
find is a command-line utility that searches one or more directory trees of a file system.

11. Read patterns from a file

$ cat pattern.txt
Unix|GNU
grep
Do a regular expression search and find all lines containing Unix, GNU or grep
$ grep -Ef pattern.txt tools.txt 
Grep was originally developed for the Unix operating system.
GNU GREP was written from scratch for the GNU operating system.
ngrep is a network packet analyzer written by Jordan Ritter.

12. Highlight matching

The color of highlighted can be changed by setting the GREP_COLOR environment variable
$ export GREP_COLOR='1;37;43' &&  grep -i --color grep tools.txt
grep-colors

13. Anchoring

Find the exact word
$ grep -i '\bgrep\b' tools.txt 
Grep was originally developed for the Unix operating system.
GNU GREP was written from scratch for the GNU operating system.

14. Recursive search

Do a search for the word: Connection ignoring case and print the file list
$ grep -ilR Connection dbtool/
dbtool/src/DBTool/DB/Connection.php
dbtool/src/DBTool/DB/SqliteConnection.php
dbtool/src/DBTool/DB/ConnectionProperties.php
dbtool/src/DBTool/DB/ConnectionException.php
dbtool/src/DBTool/DB/MySqlConnection.php

Further readings

No comments:

Post a Comment