linux中两个grwp命令一起用,grep命令

1.grep命令

grep命令的名称是来自于全局搜索正则表达式并打印文本行(Global Search Regular Expression and Print out the line)的缩写。

语法如下

grep [options] pattern [file…]

options:表示选项。

pattern:要匹配的模式。

file:表示一系列的文件名。

1.1 选项-i:忽略大小写

-q:结果不显示。

-c:接数字,列出该文件的第几行。 grep -c ftp.so /usr/local/webserver/php-5.2.4/lib/php.ini

-v:反向选择。找出没有关键字的那一行。

-h:当搜索多个文件的时候,不显示文件的前缀。

-l:只列出含有匹配文件行的文件名,不显示具体内容。

-n:显示行号和所有文本行。

-s:不显示错误信息。

-w:匹配整个单词

-x:匹配整个文本行。

-r:递归搜索,不仅搜索当前目录,还会搜索各级子目录。

-b:打印匹配文本行到文件头的偏移量,以字节为单位。

-A:后面跟数字,过滤出符合要求的行以及下面n行。

-B:后面跟数字,过滤出符合要求的行以及上面n行。

-C:后面跟数字,过滤出符合要求的行以及上和下面n行。

-E:支持扩展正则表达式。同egrep

-P:支持Perl正则表达式。

-F:不支持正则表达式,以字面意思匹配。--color=aoto:关键字加上颜色显示。

2. grep字符集

同正则:元字符 正则的特殊符号符号意义例子

^锚定行的开始"^grep"就是grep开头的行

$锚定结尾"grep$"就是grep结尾的行

.非换行符的任意一个字符"gr.p"就可以匹配到"grep,grap"

*零个或多个前字符"gr*p"就可以匹配到"grp,grrp,grrrp"

[]范围内的一个字符"[Gg]rep"就可以匹配到"Grep,grep"

[^]取非"[^a-yA-Z]"就可以匹配到z

\(..\)标记匹配字符"\(oo\)"就可以匹配到包含oo的行

\

\>锚定单词结尾"grep\>"就可以匹配到grep结尾的单词

x\{m\}匹配重复字符x,m次"g\{2\}"匹配连续两个g的行

x\{m,\}匹配重复字符x,m次或以上"g\{2,\}"匹配到"gg,gggrep"

x\{m,n\}品牌重复字符x,m到n次之间"g\{2,5\}"匹配到2到5次g的行

\w零个或多个文字和数字[0-9a-zA-Z]"g\wp"匹配到"grep"

\W一个或多个非单纯数字字符如 ", ."等

\b单词锁定"\bgrep\b"只匹配grep

egrep grep -E字符集RE字符意义例子

+1个或多个前一个字符"g+rep" 匹配到"ggrep。gggrep"

?0个或1个前面的字符"g?rep"匹配到"grep。ggrep"

|用或的方式找出字符串"gr(a

()找出字符组"gr(ee){2,5}p"匹配到greeeep,greeeeeep.或(rr)+

3. 范例

3.1 选取将last有出现root的行取出来。

last |grep 'root'

将last没有出现root的行取出来。

last |grep -v 'root'

将last有出现root的行取出来,只显示第一列。

last |grep 'root' |cut -d ' ' -f 1

3.2查找关键字找出filename文件中 含有abc的行。

grep  'abc' filename

承上,显示行好,和颜色。

grep -n --color=auto 'abc' filename

承上,把关键字所在行前三行,后两行打印出来。

grep -n --color=auto -A2 -B3 filename

找出不含有abc关键字的行。

grep -vn 'abc' filename

忽略大小写,找出包行abc的行

grep -in 'abc' filename

3.3 利用 [] 来查找关键字找出 abc aecd的行。

grep -n 'a[be]c' filename

找到不是 bc前面不是a的行。

grep -n [^a]bc' filename

找到bc前面不是小写字符的行。

grep -n [^a-z]bc' filename

找到含有数字的行。

grep -n '[0-9]' filename

grep -n [[:digit:]] filename

3.4 开头与结尾符号^$找到以a开头的行。

grep -n '^a' filename

找到以小写字母开头的行。

grep '-n ^[a-z]' filename

找到不是以字母开头的行,

grep -n '^[^a-zA-Z]' filename

找到以 . 结尾的行。

grep -n '\.$' filename

. 有特殊含义必须转义成普通字符。

找出空白行。

grep -n '^$' filename

不显示空白行和#开头的行

grep -vn '^$' filename | grep -vn '^#'

3.5 任意一个字符 . 重复字符*找出g??d的字符串。

grep -n 'g..d' filename

找出至少oo的字符串。

grep -n 'ooo*' filename

*表示0个或多个*前面一个字符。

找出o与o之间任意个任意字符的字符串。

grep -n 'o.*' filename

3.6 使用限定连续RE字符范围{}找出连续两个o的行。

grep -n 'o\{2\}' filename

找出g后面2-5个o,再接个g的字符串。

grep -n 'go\{2,5\}g' filename

找出2个或以上的o的字符串。

grep -n 'o\{2,\}' filename

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值