grep命令与正则表达式(过滤)一

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grep命令与正则表达式(过滤)一相关的知识,希望对你有一定的参考价值。

首先,我们来了解grep命令,grep (global search regular expression and printing),全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Linux中的grep命令包括、grep, egrep和fgrep 。egrep是grep的扩展,支持更多的re元字符,fgrep就是fast grep,搜索字符比较快,但不支持正则表达式。

然后,我们再来熟悉一下grep命令,其命令格式为:grep [options] ‘pattern’ FILE 。其中grep的常见选项:

-v:反向选取,只显示不符合模式的行;

-o:只显示被模式匹配的字串,而不是整个行;

-i:不区分字符的大小写;

-r:递归搜索;

-A #:显示匹配到行时,顺带显示其后面的#个行;

-B #:显示匹配到行时,顺带显示其前面的#个行;

-C #:显示匹配到行时,顺带显示其前后的#个行;

另外 ,为了用户查看显示匹配的结果,可以在grep命令之后输入  “--color=auto”,使结果呈现颜色。

--color用颜色显示过滤的内容

[[email protected] ~]# grep --color ‘root‘ /etc/passwd     
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

显示出在哪一行 -n

[[email protected] ~]# grep --color -n ‘root‘ /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin

为了方便我们做个别名

[[email protected] ~]# alias cg=‘grep --color‘
[[email protected] ~]# vim .bashrc
# .bashrc

# User specific aliases and functions

alias rm=‘rm -i‘
alias cp=‘cp -i‘
alias mv=‘mv -i‘
alias cg=‘grep --color‘
# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

测试一下

[[email protected] ~]# cg -n ‘root‘ 1.txt
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin

只想要显示行数

[[email protected] ~]# cg -c ‘root‘ 1.txt
2


取反不包含root

[[email protected] ~]# cg -v ‘root‘ 1.txt
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
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
dbus:x:81:81:System message bus:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/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
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
mysql:x:500:500::/home/mysql:/sbin/nologin
[[email protected] ~]# cg -n -A 2 ‘root‘ 1.txt      显示匹配到行时,顺带显示其后面的#个行;
1:root:x:0:0:root:/root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
11:operator:x:11:0:operator:/root:/sbin/nologin
12-games:x:12:100:games:/usr/games:/sbin/nologin
13-gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
[[email protected] ~]# cg -n -B 2 ‘games‘ 1.txt              显示匹配到行时,顺带显示其前面的#个行;
10-uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
11-operator:x:11:0:operator:/root:/sbin/nologin
12:games:x:12:100:games:/usr/games:/sbin/nologin
[[email protected] ~]# cg -n -C 2 ‘games‘ 1.txt               显示匹配到行时,顺带显示其前后的#个行;
10-uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
11-operator:x:11:0:operator:/root:/sbin/nologin
12:games:x:12:100:games:/usr/games:/sbin/nologin
13-gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
14-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin














本文出自 “Linux菜鸟” 博客,请务必保留此出处http://490617581.blog.51cto.com/11186315/1759980

以上是关于grep命令与正则表达式(过滤)一的主要内容,如果未能解决你的问题,请参考以下文章

grep命令与正则表达式(过滤)三

07 grep命令与正则表达式

grep文本过滤工具与正则表达式

linux12shell编程 --> 三剑客之grep命令

Linux grep、egrep使用命令详解

grep与正则表达式