Linux grep

简介: Linux grep

Linux命令之grep

1.grep介绍
linux命令grep--grep:Global search Regular Expression and Print out the line,该命令用于查找出文件里符合条件的字符串或正则表达式的行。

grep是用来进行文件检索的命令之一,在linux运维过程中,使用的非常频繁,建议一定记住,一定要多多使用,一定要熟练记忆!!!!

2.grep用法
grep [参数] "pattern" filename

参数:

grep命令常用的参数

grep常用参数
参数 说明
-A 显示匹配指定内容及其之后(after)的n行
-B 显示匹配指定内容及其之前(before)的n行
-C 显示匹配指定内容前后各n行
-a 将二进制视为文件文件进行查找
-c 只统计匹配的行
-n 显示匹配行及行号
-i 忽略大小写
-v 反向查找
-w 按照单词进行过滤匹配
-m 匹配结果最多展示m条
-F 使正则失效
-r 递归查找
-E 使用扩展样式进行查找,等价于egrep
-o 只输出匹配内容
-l 列出包含匹配项的文件名
-L 列出不包含匹配项的文件名
pattern:

grep命令pattern匹配常用的正则表达式

常用的正则表达式匹配
表达式 说明
^ 匹配开头,如 "^ztj" 即匹配以ztj开头的单词
$ 匹配结尾,如 "ztj$" 即匹配以ztj结尾的单词
^$ 匹配空行
. 英文"点",匹配任意一个且只有一个字符,不能匹配空行
\ 转义字符

  • 匹配前一个字符连续出现0次或1次以上
    . 匹配任意字符
    ^.
    匹配任意多个字符开头的内容
    .*$ 匹配任意多个字符结尾的内容
    ? 匹配0个或1个字符
  • 匹配1个及以上字符
    [abc] 匹配 [] 内集合中的任意一个字符,a或b或c,也可以写成 [a-c]
    [^abc]
    指定范围外的任意单个字符,[]内 ^ 表示取反操作

{m} 匹配m次
{m,n} 至少m,至多n
{m,}
至少m次

{0,n} 至多n次
[] 指定范围内的任意单个字符
[0-9]

or

[[:digit:]]

数字
[a-z]

or

[[:lower:]]

小写字母
[A-Z]

or

[[:upper:]]

大写字母

[[:alpha:]] 所有字母,不区分大小写
[[:alnum:]] 所有字母和数字
[[:space:]] 所有带空格字符的
[[:punct:]] 所有含有特殊字符的
3.实例
3.1.打印匹配行的后5行
命令:

grep -A 5 "pwpolicy" anaconda-ks.cfg

[root@rhel77 ~]# grep -A 5 "pwpolicy" anaconda-ks.cfg
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
[root@rhel77 ~]#
3.2.打印匹配行的前5行
命令:

grep -B 5 "pwpolicy" anaconda-ks.cfg

[root@rhel77 ~]# grep -B 5 "pwpolicy" anaconda-ks.cfg
%addon com_redhat_kdump --disable --reserve-mb='auto'

%end

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
[root@rhel77 ~]#
3.3.打印匹配行的前后5行
命令:

grep -A 5 -B 5 "pwpolicy" anaconda-ks.cfg

[root@rhel77 ~]# grep -A 5 -B 5 "pwpolicy" anaconda-ks.cfg
%addon com_redhat_kdump --disable --reserve-mb='auto'

%end

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
[root@rhel77 ~]#
OR

grep -C 5 "pwpolicy" anaconda-ks.cfg

[root@rhel77 ~]# grep -C 5 "pwpolicy" anaconda-ks.cfg
%addon com_redhat_kdump --disable --reserve-mb='auto'

%end

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
[root@rhel77 ~]#
OR

grep -5 "pwpolicy" anaconda-ks.cfg

[root@rhel77 ~]# grep -5 "pwpolicy" anaconda-ks.cfg
%addon com_redhat_kdump --disable --reserve-mb='auto'

%end

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
[root@rhel77 ~]#
3.4.统计pwpolicy出现的次数
命令:

grep -c "pwpolicy" anaconda-ks.cfg

[root@rhel77 ~]# grep -c "pwpolicy" anaconda-ks.cfg
3
[root@rhel77 ~]#
3.5.列出pwpolicy所在行
命令:

grep -n "pwpolicy" anaconda-ks.cfg

[root@rhel77 ~]# grep -n "pwpolicy" anaconda-ks.cfg
52:pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
53:pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
54:pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
[root@rhel77 ~]#
3.6.列出pwpolicy所在行,忽略大小写
命令:

grep -ni "pwpolicy" anaconda-ks.cfg

[root@rhel77 ~]# grep -ni "pwpolicy" anaconda-ks.cfg
52:pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
53:pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
54:pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
[root@rhel77 ~]#
3.7.列出不包含pwpolicy的行
命令:

grep -v "pwpolicy" anaconda-ks.cfg

[root@rhel77 ~]# grep -v "pwpolicy" anaconda-ks.cfg

version=DEVEL

System authorization information

auth --enableshadow --passalgo=sha512

Use CDROM installation media

cdrom

Use graphical install

graphical

Run the Setup Agent on first boot

firstboot --enable
ignoredisk --only-use=sda

Keyboard layouts

keyboard --vckeymap=us --xlayouts='us'

System language

lang en_US.UTF-8

Network information

network --bootproto=static --device=ens33 --gateway=192.168.10.1 --ip=192.168.10.110 --netmask=255.255.255.0 --onboot=off --ipv6=auto --no-activate
network --hostname=rhel77

repo --name="Server-HighAvailability" --baseurl=file:///run/install/repo/addons/HighAvailability
repo --name="Server-ResilientStorage" --baseurl=file:///run/install/repo/addons/ResilientStorage

Root password

rootpw --iscrypted $6$EVbItnP7747AenVw$lHPkryuzGj7098ZsDrVIolzIAjQ4qH6vc35c0ZkbjjN3Ie.XajcAv6s2GCIZ3YFl3gO25aa1Sr1ZeDY6QGbK4/

System services

services --disabled="chronyd"

System timezone

timezone Asia/Shanghai --isUtc --nontp

System bootloader configuration

bootloader --location=mbr --boot-drive=sda

Partition clearing information

clearpart --none --initlabel

Disk partitioning information

part pv.630 --fstype="lvmpv" --ondisk=sda --size=10242
part swap --fstype="swap" --ondisk=sda --size=10240
part /boot --fstype="xfs" --ondisk=sda --size=1024
part / --fstype="xfs" --ondisk=sda --size=70650
part /home --fstype="xfs" --ondisk=sda --size=10240
volgroup rhel_rhel77 --pesize=4096 pv.630
logvol /var --fstype="xfs" --size=10240 --name=var --vgname=rhel_rhel77

%packages
@^minimal
@core

%end

%addon com_redhat_kdump --disable --reserve-mb='auto'

%end

%anaconda
%end
[root@rhel77 ~]#

3.8.精确匹配pwpolicy,并输出匹配结果
命令:

grep -w "pwpolicy" anaconda-ks.cfg

[root@rhel77 ~]# grep -w "pwpolicy" anaconda-ks.cfg
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
[root@rhel77 ~]#
3.9.匹配pwpolicy,匹配结果最多展示2条
命令:

grep -m 2 "pwpolicy" anaconda-ks.cfg

[root@rhel77 ~]# grep -m 2 "pwpolicy" anaconda-ks.cfg
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
[root@rhel77 ~]#
3.10.匹配[89]字段,并输出匹配结果
命令:

grep -F "[89]" anaconda-ks.cfg

[root@rhel77 ~]# grep -F "[89]" anaconda-ks.cfg

2[89]0 ztj test

[root@rhel77 ~]#
3.11.模糊匹配8或9数值,并输出匹配结果
命令:

grep "[89]" anaconda-ks.cfg

[root@rhel77 ~]# grep "[89]" anaconda-ks.cfg

2[89]0 ztj test

lang en_US.UTF-8
network --bootproto=static --device=ens33 --gateway=192.168.10.1 --ip=192.168.10.110 --netmask=255.255.255.0 --onboot=off --ipv6=auto --no-activate
rootpw --iscrypted $6$EVbItnP7747AenVw$lHPkryuzGj7098ZsDrVIolzIAjQ4qH6vc35c0ZkbjjN3Ie.XajcAv6s2GCIZ3YFl3gO25aa1Sr1ZeDY6QGbK4/
volgroup rhel_rhel77 --pesize=4096 pv.630
[root@rhel77 ~]#
3.12.只输出匹配pwpolicy字段
命令:

grep -o "pwpolicy" anaconda-ks.cfg

[root@rhel77 ~]# grep -o "pwpolicy" anaconda-ks.cfg
pwpolicy
pwpolicy
pwpolicy
[root@rhel77 ~]#
3.13.输出包含pwpolicy字段的文件名
命令:

grep -l "pwpolicy" anaconda-ks.cfg

[root@rhel77 ~]# grep -l "pwpolicy" anaconda-ks.cfg
anaconda-ks.cfg
[root@rhel77 ~]#
3.14.输出不包含pwpolicy字段的文件名
命令:

grep -L "pwpolicy" *

[root@rhel77 ~]# grep -L "pwpolicy" *
1
a.txt
grep: conf: Is a directory
conf
grep: data: Is a directory
data
fork.sh
grep: inf: Is a directory
inf
lanmp.sh
lanmp_v3.2.tar.gz
grep: lib: Is a directory
lib
login-1.sh
login.sh
mysql_installation.sh
remi-release-7.rpm
shell_id.sh
stderr.txt
stdin.txt
stdin.txt
grep: web1: Is a directory
web1
grep: web2: Is a directory
web2
grep: web3: Is a directory
web3
grep: web4: Is a directory
web4
grep: web5: Is a directory
web5
grep: web6: Is a directory
web6
[root@rhel77 ~]#

3.15.查找包含pwpolicy或part字段的行
命令:

grep -E "pwpolicy|part" anaconda-ks.cfg

[root@rhel77 ~]# grep -E "pwpolicy|part" anaconda-ks.cfg
clearpart --none --initlabel

Disk partitioning information

part pv.630 --fstype="lvmpv" --ondisk=sda --size=10242
part swap --fstype="swap" --ondisk=sda --size=10240
part /boot --fstype="xfs" --ondisk=sda --size=1024
part / --fstype="xfs" --ondisk=sda --size=70650
part /home --fstype="xfs" --ondisk=sda --size=10240
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
[root@rhel77 ~]#
OR

grep "pwpolicy|part" anaconda-ks.cfg

[root@rhel77 ~]# grep "pwpolicy|part" anaconda-ks.cfg
clearpart --none --initlabel

Disk partitioning information

part pv.630 --fstype="lvmpv" --ondisk=sda --size=10242
part swap --fstype="swap" --ondisk=sda --size=10240
part /boot --fstype="xfs" --ondisk=sda --size=1024
part / --fstype="xfs" --ondisk=sda --size=70650
part /home --fstype="xfs" --ondisk=sda --size=10240
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
[root@rhel77 ~]#
3.16.输出以pwpolicy开头的行
命令:

grep ^pwpolicy anaconda-ks.cfg

[root@rhel77 ~]# grep ^pwpolicy anaconda-ks.cfg
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
[root@rhel77 ~]#
3.17.输出以1024结尾的行
命令:

grep 1024$ anaconda-ks.cfg

[root@rhel77 ~]# grep 1024$ anaconda-ks.cfg
part /boot --fstype="xfs" --ondisk=sda --size=1024
[root@rhel77 ~]#
3.18.匹配结尾为数字的行
命令:

grep [0-9]$ anaconda-ks.cfg

[root@rhel77 ~]# grep [0-9]$ anaconda-ks.cfg
auth --enableshadow --passalgo=sha512
lang en_US.UTF-8
network --hostname=rhel77
part pv.630 --fstype="lvmpv" --ondisk=sda --size=10242
part swap --fstype="swap" --ondisk=sda --size=10240
part /boot --fstype="xfs" --ondisk=sda --size=1024
part / --fstype="xfs" --ondisk=sda --size=70650
part /home --fstype="xfs" --ondisk=sda --size=10240
volgroup rhel_rhel77 --pesize=4096 pv.630
logvol /var --fstype="xfs" --size=10240 --name=var --vgname=rhel_rhel77
[root@rhel77 ~]#
3.19.列出anaconda-ks.cfg文件中,包含2位数或3位数的内容
命令:

grep -n -E "\<[0-9]{2,3}>" anaconda-ks.cfg

[root@rhel77 ~]# grep -n -E "\<[0-9]{2,3}>" anaconda-ks.cfg
7:# 2[89]0 ztj test
18:network --bootproto=static --device=ens33 --gateway=192.168.10.1 --ip=192.168.10.110 --netmask=255.255.255.0 --onboot=off --ipv6=auto --no-activate
34:part pv.630 --fstype="lvmpv" --ondisk=sda --size=10242
39:volgroup rhel_rhel77 --pesize=4096 pv.630
[root@rhel77 ~]#
3.20.找出anaconda-ks.cfg文件中数值7出现的次数至少2次
命令:

grep -E '7{2,}' anaconda-ks.cfg

[root@rhel77 ~]# grep -E '7{2,}' anaconda-ks.cfg
network --hostname=rhel77
rootpw --iscrypted $6$EVbItnP7747AenVw$lHPkryuzGj7098ZsDrVIolzIAjQ4qH6vc35c0ZkbjjN3Ie.XajcAv6s2GCIZ3YFl3gO25aa1Sr1ZeDY6QGbK4/
volgroup rhel_rhel77 --pesize=4096 pv.630
logvol /var --fstype="xfs" --size=10240 --name=var --vgname=rhel_rhel77
[root@rhel77 ~]#
3.21.递归找出当前etc目录下所有文件中开头包含root的文件
命令:

grep -r '^root' /etc

[root@rhel77 ~]# grep -r '^root' /etc
/etc/pki/ca-trust/extracted/README:root CA certificates.
/etc/pki/ca-trust/extracted/java/README:root CA certificates.
/etc/pki/ca-trust/extracted/openssl/README:root CA certificates.
/etc/pki/ca-trust/extracted/pem/README:root CA certificates.
/etc/selinux/targeted/seusers:root:unconfined_u:s0-s0:c0.c1023
/etc/group-:root:x:0:
/etc/gshadow-:root:::
/etc/group:root:x:0:
/etc/gshadow:root:::
/etc/passwd-:root:x:0:0:root:/root:/bin/bash
/etc/shadow-:root:$6$EVbItnP7747AenVw$lHPkryuzGj7098ZsDrVIolzIAjQ4qH6vc35c0ZkbjjN3Ie.XajcAv6s2GCIZ3YFl3gO25aa1Sr1ZeDY6QGbK4/::0:99999:7:::
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/services:rootd 1094/tcp # ROOTD
/etc/services:rootd 1094/udp # ROOTD
/etc/shadow:root:$6$EVbItnP7747AenVw$lHPkryuzGj7098ZsDrVIolzIAjQ4qH6vc35c0ZkbjjN3Ie.XajcAv6s2GCIZ3YFl3gO25aa1Sr1ZeDY6QGbK4/::0:99999:7:::
/etc/security/limits.d/20-nproc.conf:root soft nproc unlimited
/etc/sudoers:root ALL=(ALL) ALL
[root@rhel77 ~]#

————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/z19861216/article/details/131176334

目录
相关文章
|
6月前
|
Linux
认识Linux指令之 “find grep” 命令
认识Linux指令之 “find grep” 命令
123 1
认识Linux指令之 “find grep” 命令
|
6月前
|
存储 监控 Linux
性能工具之linux三剑客awk、grep、sed详解
Linux 三剑客 awk,sed和grep 在性能领域广泛用于性能建模、性能监控及性能分析等方面,也是各大互联网公司测试岗高频面试题,中高端测试人员必备技能之一。
152 1
性能工具之linux三剑客awk、grep、sed详解
|
2月前
|
监控 Linux
linux之grep详解
linux之grep详解
|
2月前
|
存储 Linux Shell
linux查找技巧: find grep xargs
linux查找技巧: find grep xargs
35 13
|
2月前
|
机器学习/深度学习 存储 Linux
linux中强大且常用命令:find、xargs、grep
linux中强大且常用命令:find、xargs、grep
83 9
|
2月前
|
SQL 移动开发 Linux
linux下find、grep命令详解
linux下find、grep命令详解
158 8
|
3月前
|
Unix Linux C语言
在Linux中,grep和egrep命令的区别?
在Linux中,grep和egrep命令的区别?
|
3月前
|
Linux
在Linux中,如何使用grep命令搜索文本?
在Linux中,如何使用grep命令搜索文本?
|
3月前
|
Linux Shell
在Linux中,如何使用grep命令查找文件中的内容?
在Linux中,如何使用grep命令查找文件中的内容?
|
4月前
|
Linux
linux中 grep过滤查找 及 管道 ”|” 的使用
linux中 grep过滤查找 及 管道 ”|” 的使用