打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Grep:如何在linux下使用grep命令

Grep:如何在linux下使用grep命令

发表于2年前(2014-04-21 23:22)   阅读(80) | 评论(0 0人收藏此文章, 我要收藏
0
摘要 在linux/unix下,我们是怎么使用grep命令的呢?什么是grep呢?我们能用grep命令来干些什么呢?下面我们来分析:grep命令是在文件中全局查找指定的正则表达式,并且打印所有包含该表达式的行。egrep命令是扩展的grep,支持更多的正则表达式元字符。


在linux/unix下,我们是怎么使用grep命令的呢?什么是grep呢?我们能用grep命令来干些什么呢?下面我们来分析:
grep命令是在文件中全局查找指定的正则表达式,并且打印所有包含该表达式的行。egrep命令是扩展的grep,支持更多的正则表达式元字符。自由软件基金会提供了grep的免费版本,称作GNU grep,在linux系统上默认安装就是这个免费版本。

grep命令参数

1
2
3
4
5
6
grep 'word' 文件名
grep 'word' 文件1 文件2 文件3 ...文件N
grep ‘字符串1 字符串2’ 文件名
cat 文件名| grep ”字符串“
命令 | grep "字符串"
grep --color "字符串" 文件名

如何使用grep命令去搜索某个文件中的内容呢?
查找 /etc/passwd 文件中是否存在user1这个用户,可以使用下面的命令:

1
2
3
[root@devops ~]# grep user1 /etc/passwd
user1:x:501:501::/home/user1:/bin/bash
[root@devops ~]#

如果想忽略大小写去查找比如:User1,USER1或者其它的组合,可以使用-i选项

1
2
3
4
[root@devops ~]# grep -i user1 /etc/passwd
user1:x:501:501::/home/user1:/bin/bash
USER1:x:502:502::/home/USER1:/bin/bash
[root@devops ~]#

grep 命令递归查找
你可以递归去查找某个目录下各级子目录里的匹配查找模式的行,使用-r 选项

1
2
3
4
5
6
7
8
9
10
11
[root@devops ~]# grep -r user1 /etc | more
/etc/group-:user1:x:501:
/etc/shadow:user1:!!:16176:0:99999:7:::
/etc/group:user1:x:501:
/etc/passwd-:user1:x:501:501::/home/user1:/bin/bash
/etc/gshadow-:user1:!::
/etc/shadow-:user1:!!:16176:0:99999:7:::
/etc/passwd:user1:x:501:501::/home/user1:/bin/bash
/etc/gshadow:user1:!::
/etc/postfix/virtual:#            user1@virtual-alias.domain       address1
[root@devops ~]#

使用grep去匹配某一个单词
选项-w使grep命令只查找作为一个词,而不是词的一部分去做匹配

举例说明:

1
2
3
4
5
[root@devops ~]# grep user1 /etc/passwd
user1:x:501:501::/home/user1:/bin/bash
user1add:x:503:503::/home/user1add:/bin/bash
[root@devops ~]# grep -w 'user1' /etc/passwd
user1:x:501:501::/home/user1:/bin/bash

在本例中能够匹配“user1"的模式有两行,那么当你只想匹配一个完整的user1这个单词的时候,可以使用-w选项。

使用grep命令去查找2个不同的词

1
2
3
4
[root@devops ~]# egrep -w "user1|USER1" /etc/passwd
user1:x:501:501::/home/user1:/bin/bash
USER1:x:502:502::/home/USER1:/bin/bash
[root@devops ~]#

统计grep查找出来的行数
grep命令可以使用-c选项来显示出匹配到的行数

1
2
[root@devops ~]# grep -c 'user1' /etc/passwd
2

使用-n 选项可以显示出查找到的行在文件中的行号

1
2
3
[root@devops ~]# grep -n 'user1' /etc/passwd
23:user1:x:501:501::/home/user1:/bin/bash
25:user1add:x:503:503::/home/user1add:/bin/bash

grep反向查找只显示不匹配的行
你可以使用-v 选项来显示不匹配的行,例如:

1
2
3
4
5
6
7
[root@devops ~]# grep -v user1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
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

linux 管道符和grep命令的搭配使用
grep命令经常会和linux或unix管道符搭配使用,如显示硬盘设备的名字:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@devops ~]# dmesg | egrep '(s|h)d[a-z]'
NMI watchdog disabled (cpu0): hardware events not enabled
sd 2:0:0:0: [sda] 41943040 512-byte logical blocks: (21.4 GB/20.0 GiB)
sd 2:0:0:0: [sda] Write Protect is off
sd 2:0:0:0: [sda] Mode Sense: 61 00 00 00
sd 2:0:0:0: [sda] Cache data unavailable
sd 2:0:0:0: [sda] Assuming drive cache: write through
sd 2:0:0:0: [sda] Cache data unavailable
sd 2:0:0:0: [sda] Assuming drive cache: write through
 sda: sda1 sda2
sd 2:0:0:0: [sda] Cache data unavailable
sd 2:0:0:0: [sda] Assuming drive cache: write through
sd 2:0:0:0: [sda] Attached SCSI disk
dracut: Scanning devices sda2  for LVM logical volumes vg_devops/lv_root vg_devops/lv_swap 
EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: 
SELinux: initialized (dev sda1, type ext4), uses xattr

显示cpu模块名字:

1
2
3
4
[root@devops ~]# cat /proc/cpuinfo  | grep -i 'Model'
model           : 42
model name      : Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz
[root@devops ~]#

如何只输出包含模式的文件名,而不是输出文本行

1
2
3
4
5
6
7
8
9
[root@devops ~]# grep -l 'user1' /etc/*
/etc/group
/etc/group-
/etc/gshadow
/etc/gshadow-
/etc/passwd
/etc/passwd-
/etc/shadow
/etc/shadow-


分享到:
0

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
grep与egrep同时查找匹配多个字符串的例子
grep显示匹配到的行数目
Linux日常维护常用命令集合整理
14 个 grep 命令的例子
打包压缩、重定向、通配符
bash脚本中取文件路径(文件名)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服