文本查找

grep:根据模式,搜索文本,并将符合模式的文本行显示出来。
Pattern:文本字符和正则表达式的元字符组合而成匹配条件
在/etc/passwd文件中搜索包含root的行显示出来
grep 'root' /etc/passwd
[root@mylab ~]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
grep -i:忽略大小写搜索文本
grep --color:将匹配模式的以颜色显示
grep --color 'root' /etc/passwd

grep -v:显示没有被模式匹配到的行
[root@mylab ~]# grep -v --color 'root' /etc/passwd(显示非root的行)
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
pcap:x:77:77::/var/arpwatch:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
avahi:x:70:70:Avahi daemon:/:/sbin/nologin
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
avahi-autoipd:x:100:101:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin
sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin
student:x:500:500::/home/student:/bin/bash
user3:x:2002:1002:user3,beijing,010,020:/home/user3:/bin/tcsh
user4:x:1003:1003:Tony Blare:/home/blare:/bin/bash
user5:x:1004:1004::/home/user5:/sbin/nologin
user6:x:1005:1005::/home/user6:/bin/tcsh
user7:x:1006:1006::/home/user7:/bin/bash
hadoop:x:2003:2003::/home/hadoop:/bin/bash
openstack:x:2004:2004::/home/openstack:/bin/bash
hive:x:5000:5000:Hive:/home/hive:/bin/bash
toto:x:6000:6000:TOTO:/home/toto:/bin/bash

grep -o:只显示被模式匹配到的字符串

正则表达式:
元字符:
.:匹配任意单个字符
grep 'r..t' /etc/passwd(匹配显示以r字母开头,结尾为t,中间是任意两个字符)

[]:匹配指定范围内的任意单个字符
grep '[HAL]' /etc/passwd(匹配显示字母H或A或L的行)

grep --color '[^HAL]' /etc/passwd(匹配显示不是H或A或L的行)

字符集合:
数字:[:digit:]
小写字母[:lower:]
大写字母[:upper:]
标点符号[:punct:]
空白符号[:space:]
大小写字母[:alpha:]
大小写字母数字[:alnum:]

匹配次数(贪婪模式,尽可能长的匹配):
:匹配其前面的字符任意次
grep --color 'a
b' cishu.txt

.:任意长度的任意字符
grep --color 'a.
b' cishu.txt

\?:匹配其前面的字符1次或0次
grep --color 'a\?b' cishu.txt

{m,n}:匹配其前面的字符至少m次,至多n次
grep --color 'a{1,3}b' cishu.txt

位置锚定:
^:锚定行首,此字符后面的任意内容必须出现在行首
$:锚定行尾,此字符前面的任意内容必须出现在行尾
\>:锚定词尾,其前面的任意字符必须作为单词的尾部出现
\<:锚定词首,其后面的任意字符必须作为单词首部出现

^$:空白行

分组:
()
(ab)
grep --color '(ab)
'

后项引用:
\1:引用第一个左括号以及与之对应右括号所包括的所有内容

grep --color '([0-9]).*\1$' /etc/inittab(查找行中有数字0-9任意数字,结尾也必须和前面的数字一样的行)

正则表达式:
Basic REGEXP:基本
Extended REGEXP:扩展
grep :使用基本正则表达式定义的模式来过滤文本的命令
-i:忽略大小写
-v:反向过滤
-o:匹配串本身
--color:匹配颜色显示
-E:使用扩展正则表达式
-A #:匹配到这一行向后显示2行
-B #:匹配到这一行向前显示2行
-C #:匹配到这一行,前后各显示2行

-B #:
grep --color -B 2 'cpuid' /proc/cpuinfo 

fpu : yes
fpu_exception : yes
cpuid level : 13

-C#:
[root@mylab ~]# grep -C 2 --color  'cpuid' /proc/cpuinfo

fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss nx pdpe1gb rdtscp lm constant_tsc up nonstop_tsc arat pni ssse3 cx16 sse4_1 sse4_2 popcnt lahf_lm [8]

扩展正则表达式:
字符匹配:
.:匹配任意单个字符
[]:匹配括号范围的任意单个字符

次数匹配:
*:匹配前面的字符任意次
?:匹配前面的字符0次或1次
+:匹配前面的字符至少1次
{m.n}:匹配前面的字符至少m次最多n次
位置锚定:
^:锚定行首
$:锚定行尾
\>:锚定词尾
\<:锚定词首
分组:
() \1 \2 \3,...后项引用
或者
|
C|cat:表示Cat或C
[root@mylab ~]# grep -E --color 'C|cat' test6.txt

找出/boot/grub/grub.conf文件中1-255之间的数字
egrep --color '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>' /boot/grub/grub.conf

你可能感兴趣的:(文本查找)