17.三剑客之grep

应用:对文本进行字符查找、筛选,利用正则表达式对文件,进行全局搜索。
格式:grep [选项] [文件]

常用选项:
-c :统计匹配结果一共多少行
-i :忽略大小写
-n :显示行号
-v :反向选择——仅列出没有“关键词”的行。
-o :只显示匹配到的内容,不是整行打印出来
-e :多条件匹配字符串,条件之间或关系,条件之间空格隔开
-w :默认匹配是不精确的,-w表示精确匹配,除了数字下划线分割的,都是单词
-q :不管匹配是否成功,都不显示,若想知道是否匹配成功,配合echo $?
-Bn :n代表数字,显示符合条件的行,同时也显示前n行内容
-An :n代表数字,显示符合条件的行,同时也显示后n行内容
-Cn :n代表数字,显示符合条件的行,同时也显示前后n行内容
-E:使用正则表达式,等价于egrep

例子解释:
grep -n ‘the’ filename —在文件中查询’the’
grep -vn ‘the’ filename —在文件中查询不包含’the’的行
grep -in ‘the’ filename —-在文件中查询’the’,不分大小写
grep -n ‘[^a-z]oo’ filename —查询‘’oo’前面不包含小写字母的.[^A-Z]不要大写字母的
grep -n ‘[0-9]’ filename — 查询有数字的一行
grep -n ‘^the’ filename — 查询the开头的行
grep -n ‘^[a-z]’ filename — 查询小写字母开头的行
grep -n ‘^[^a-zA-Z]’ filename — 查询不要字母开头的
grep -v ‘^#’ filename —去掉注释
grep -i -c ‘test’ filename —-统计有test字符串,不区分大小写,总行数

实用例子:
1.查询/etc/passwd文件中当前用户

#grep "$USER" /etc/passwd
#grep "$(whoami)" /etc/passwd

2.忽略大小写,并显示行号

#grep -in "ROot" /etc/passwd

3.匹配成功的行数

#grep -ic "ROot" /etc/passwd

4.单纯打印匹配成功的字符串,而不是匹配成功所在的行

#grep -o "root" /etc/passwd
root
root
root
root

5.-q应用

[root@Centos7 data]#grep -q "root" /etc/passwd
[root@Centos7 data]#echo $?
0   #0代表匹配成功  非0则是匹配不成功

6.显示 匹配成功的后3行,并显示行号,使用-n选项的时候,一定到放在A前面,比如:-nA -An(会报错)

#grep -nA 3 "root" /etc/passwd  后3行
#grep -nB 3 "root" /etc/passwd  前3行
#grep -nC 3 "root" /etc/passwd  前后3行

7.查看172.16.34.0/24网段 有哪些IP打开着。

#nmap -v -sP 172.16.34.0/24 |grep -B1 "up"| grep "Nmap scan"|cut -d" " -f5
nmap命令扫描哪些ip是打开着。

8.多条件匹配-e选项使用,或者关系,没有执行顺序关系

[root@Centos7 data]#grep -e "root" -e "/bin/bash" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
chen:x:1000:1000:chen:/home/chen:/bin/bash
nginx:x:1004:1005::/home/nginx:/bin/bash
varnish:x:1003:1002::/home/varnish:/bin/bash

9.精确匹配-w,带下划线和数字的不算一个单词,所以不匹配成功

[root@Centos7 data]#echo "abc"|grep -w "abc"
abc
[root@Centos7 data]#echo "abc 123"|grep -w "abc"
abc 123
[root@Centos7 data]#echo "abc:123"|grep -w "abc"
abc:123
[root@Centos7 data]#echo "abc_123"|grep -w "abc"   
[root@Centos7 data]#echo "abc-123"|grep -w "abc"
abc-123

10.从1-100中包含9数字的有多少个。

#seq 100|grep 9|wc -l

11.取2个文件交集部分

#grep -f f1 f2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值