|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
初学阶段只要把上课时候学习过的命令练熟就可以了.单靠学习各种命令而成为高手是不可能的。
Linux体系中grep命令是一种壮大的文本搜刮工具,它能利用正则表达式搜刮文本,并把婚配的行打印出来。grep全称是GlobalRegularExpressionPrint,暗示全局正则表达式版本,它的利用权限是一切用户。
grep的事情体例是如许的,它在一个或多个文件中搜刮字符串模板。假如模板包含空格,则必需被援用,模板后的一切字符串被看做文件名。搜刮的了局被送到尺度输入,不影响原文件内容。
grep可用于shell剧本,由于grep经由过程前往一个形态值来讲明搜刮的形态,假如模板搜刮乐成,则前往0,假如搜刮不乐成,则前往1,假如搜刮的文件不存在,则前往2。我们使用这些前往值便可举行一些主动化的文本处置事情。
1.命令格局:
grep[option]patternfile
2.命令功效:
用于过滤/搜刮的特定字符。可以使用正则表达式能多种命令共同利用,利用上非常天真。
3.命令参数:
-a--text#不要疏忽二进制的数据。
-A<显现行数>--after-context=<显现行数>#除显现切合范本款式的那一列以外,并显现该行以后的内容。
-b--byte-offset#在显现切合款式的那一行之前,标示出该行第一个字符的编号。
-B<显现行数>--before-context=<显现行数>#除显现切合款式的那一行以外,并显现该行之前的内容。
-c--count#盘算切合款式的列数。
-C<显现行数>--context=<显现行数>或-<显现行数>#除显现切合款式的那一行以外,并显现该行之前后的内容。
-d<举措>--directories=<举措>#当指定要查找的是目次而非文件时,必需利用这项参数,不然grep指令将报答信息并中断举措。
-e<范本款式>--regexp=<范本款式>#指定字符串做为查找文件内容的款式。
-E--extended-regexp#将款式为延长的一般暗示法来利用。
-f<划定规矩文件>--file=<划定规矩文件>#指定例则文件,其内容含有一个或多个划定规矩款式,让grep查找切合划定规矩前提的文件内容,格局为每行一个划定规矩款式。
-F--fixed-regexp#将款式视为流动字符串的列表。
-G--basic-regexp#将款式视为一般的暗示法来利用。
-h--no-filename#在显现切合款式的那一行之前,不标示该行所属的文件称号。
-H--with-filename#在显现切合款式的那一行之前,暗示该行所属的文件称号。
-i--ignore-case#疏忽字符巨细写的不同。
-l--file-with-matches#列出文件内容切合指定的款式的文件称号。
-L--files-without-match#列出文件内容不切合指定的款式的文件称号。
-n--line-number#在显现切合款式的那一行之前,标示出该行的列数编号。
-q--quiet或--silent#不显现任何信息。
-r--recursive#此参数的效果和指定“-drecurse”参数不异。
-s--no-messages#不显现毛病信息。
-v--revert-match#显现不包括婚配文本的一切行。
-V--version#显现版本信息。
-w--word-regexp#只显现全字切合的列。
-x--line-regexp#只显现全列切合的列。
-y#此参数的效果和指定“-i”参数不异。
4.划定规矩表达式:
grep的划定规矩表达式:
^#锚定行的入手下手如:^grep婚配一切以grep开首的行。
$#锚定行的停止如:grep$婚配一切以grep开头的行。
.#婚配一个非换行符的字符如:gr.p婚配gr后接一个恣意字符,然后是p。
*#婚配零个或多个先前字符如:*grep婚配一切一个或多个空格后紧跟grep的行。
.*#一同用代表恣意字符。
[]#婚配一个指定局限内的字符,如[Gg]rep婚配Grep和grep。
[^]#婚配一个不在指定局限内的字符,如:[^A-FH-Z]rep婚配不包括A-R和T-Z的一个字母开首,紧跟rep的行。
(..)#标志婚配字符,如(love),love被标志为1。
<#锚订单词的入手下手,如:<grep婚配包括以grep开首的单词的行。
>#锚订单词的停止,如grep>婚配包括以grep开头的单词的行。
x{m}#反复字符x,m次,如:0{5}婚配包括5个o的行。
x{m,}#反复字符x,最少m次,如:o{5,}婚配最少有5个o的行。
x{m,n}#反复字符x,最少m次,未几于n次,如:o{5,10}婚配5--10个o的行。
w#婚配笔墨和数字字符,也就是[A-Za-z0-9],如:Gw*p婚配以G后跟零个或多个笔墨或数字字符,然后是p。
W#w的反置情势,婚配一个或多个非单词字符,如点号句号等。
b#单词锁定符,如:bgrepb只婚配grep。
POSIX字符:
为了在分歧国度的字符编码中坚持一至,POSIX(ThePortableOperatingSystemInterface)增添了特别的字符类,如[:alnum:]是[A-Za-z0-9]的另外一个写法。要把它们放到[]号内才干成为正则表达式,如[A-Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都撑持POSIX的字符类。
[:alnum:]#笔墨数字字符
[:alpha:]#笔墨字符
[:digit:]#数字字符
[:graph:]#非空字符(非空格、把持字符)
[:lower:]#小写字符
[:cntrl:]#把持字符
[:print:]#非空字符(包含空格)
[:punct:]#标点标记
[:space:]#一切空缺字符(新行,空格,制表符)
[:upper:]#年夜写字符
[:xdigit:]#十六进制数字(0-9,a-f,A-F)
5.利用实例:
实例1:查找指定历程
命令:
ps-ef|grepsvn
输入:
[root@localhost~]#ps-ef|grepsvn
root494310Dec05?00:00:00svnserve-d-r/opt/svndata/grape/
root1686716838019:53pts/000:00:00grepsvn
[root@localhost~]#
申明:
第一笔记录是查找出的历程;第二条了局是grep历程自己,并不是真正要找的历程。
实例2:查找指定历程个数
命令:
ps-ef|grepsvn-c
ps-ef|grep-csvn
输入:
[root@localhost~]#ps-ef|grepsvn-c
2
[root@localhost~]#ps-ef|grep-csvn
2
[root@localhost~]#
申明:
实例3:从文件中读取关头词举行搜刮
命令:
cattest.txt|grep-ftest2.txt
输入:
[root@localhosttest]#cattest.txt
hnlinux
peida.cnblogs.com
ubuntu
ubuntulinux
redhat
Redhat
linuxmint
[root@localhosttest]#cattest2.txt
linux
Redhat
[root@localhosttest]#cattest.txt|grep-ftest2.txt
hnlinux
ubuntulinux
Redhat
linuxmint
[root@localhosttest]#
申明:
输入test.txt文件中含有从test2.txt文件中读掏出的关头词的内容行
实例3:从文件中读取关头词举行搜刮且显现行号
命令:
cattest.txt|grep-nftest2.txt
输入:
[root@localhosttest]#cattest.txt
hnlinux
peida.cnblogs.com
ubuntu
ubuntulinux
redhat
Redhat
linuxmint
[root@localhosttest]#cattest2.txt
linux
Redhat
[root@localhosttest]#cattest.txt|grep-nftest2.txt
1:hnlinux
4:ubuntulinux
6:Redhat
7:linuxmint
[root@localhosttest]#
申明:
输入test.txt文件中含有从test2.txt文件中读掏出的关头词的内容行,并显现每行的行号
实例5:从文件中查找关头词
命令:
greplinuxtest.txt
输入:
[root@localhosttest]#greplinuxtest.txt
hnlinux
ubuntulinux
linuxmint
[root@localhosttest]#grep-nlinuxtest.txt
1:hnlinux
4:ubuntulinux
7:linuxmint
[root@localhosttest]#
申明:
实例6:从多个文件中查找关头词
命令:
greplinuxtest.txttest2.txt
输入:
[root@localhosttest]#grep-nlinuxtest.txttest2.txt
test.txt:1:hnlinux
test.txt:4:ubuntulinux
test.txt:7:linuxmint
test2.txt:1:linux
[root@localhosttest]#greplinuxtest.txttest2.txt
test.txt:hnlinux
test.txt:ubuntulinux
test.txt:linuxmint
test2.txt:linux
[root@localhosttest]#
申明:
使用gcc或g++进行编译,使用gdb进行调试; |
|