How To Use Linux Grep Command To Find Strings

May 6, 2012 | By
| Reply More

Linux Grep

Linux and UNIX-like systems, all system configuration information is stored and manipulated in plain text form. The grep tool allows to search of text, such as a file or output of the command, for a term or pattern matching regular expressions. Grep is used to search text for patterns specified by the user. It is one of the most useful and powerful commands on Linux and UNIX like operating system. When grep finds match in a line, it copies in to the screen that is stdout. Using grep command you can replace the string in given file. Grep provides a number of additional options that, if specified , force the program to output the context for each match.

Syntax

grep [ option(s) ] pattern [file(s) ]

Example 1 : Basic Grep Command

The basic usage of grep command is to search for a specific string in the specified file as shown below.

[root@localhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

Above example grep searches the /etc/passwd file for root string and redirected to stdout.

Options

-i This is also a basic usage of the grep. This searches for the given string/pattern case insensitively. So it matches all the words such as “hal”, “HAL” and “The” case insensitively as shown below.

Even you can use Line and, anchors, character classes, wild cards,

[root@localhost ~]# grep -i HAL /etc/passwd
halt:x:7:0:halt:/sbin:/sbin/halt
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin

Example 2 : Searching string in a given file

[root@localhost ~]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

Example 3 : Searching string in a multiple files

[root@localhost ~]# grep "root" /etc/passwd /etc/group
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
/etc/group:root:x:0:root
/etc/group:bin:x:1:root,bin,daemon
/etc/group:daemon:x:2:root,bin,daemon
/etc/group:sys:x:3:root,bin,adm
/etc/group:adm:x:4:root,adm,daemon
/etc/group:disk:x:6:root
/etc/group:wheel:x:10:root

Example 4 : Regular Expressions in files

? The preceding item is optional and matched at most once.
• * The preceding item will be matched zero or more times.
• + The preceding item will be matched one or more times.
• {n} The preceding item is matched exactly n times.
• {n,} The preceding item is matched n or more times.
• {,m} The preceding item is matched at most m times.
• {n,m} The preceding item is matched at least n times, but not more than m times.

[root@localhost ~]# grep " *oot" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

Example 5 : Searching full word using grep –w

[root@localhost ~]# grep -iw "samba" /etc/samba/smb.conf
# This is the main Samba configuration file. You should read the
# here. Samba has a huge number of configurable options (perhaps too
# For a step to step guide on installing, configuring and using samba,
# read the Samba-HOWTO-Collection. This may be obtained from:

Example 6 : Grep with option -A

-A option which displays the N lines after the string match.

[root@localhost ~]# grep -A 2 "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

Example: 6 : -B option which displays the N lines before the string match

[root@localhost ~]# grep -B 2 "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
--
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

Example 7 : -E option can be used search multiple strings

[root@localhost ~]# ls | grep -E “li|ovo”
linux24
ovo8_linux24.sh
[root@localhost ~]#

Or we can use

[root@localhost ~]# ls | grep ‘li\|ovo’
linux24
ovo8_linux24.sh
[root@localhost ~]#

Example 8 : Below grep command will search string in all files except syslog.log

[root@localhost ~]#grep -r string * | grep -v ‘/\syslog.log/’

Filed Under : HOWTOS, LINUX COMMANDS, LINUX HOWTO

Tagged With :

Free Linux Ebook to Download

Leave a Reply

Commenting Policy:
Promotion of your products ? Comment gets deleted.
All comments are subject to moderation.