grep在linux系统的用法

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6


复习
linux中grep家族总共有三个:grep,egrep,fgrep。
常用选项:
  -E :开启扩展(Extend)的正则表达式。
  -i :忽略大小写(ignore case)

[root@centos8 ~]# grep -i "Ip" /etc/sysconfig/network-scripts/ifcfg-enp0s3     
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
IPADDR=192.168.43.150

-v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。

[root@centos8 ~]# grep -v "IP" /etc/sysconfig/network-scripts/ifcfg-enp0s3  
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
NAME=enp0s3
UUID=2ef994b5-508e-4818-8271-5aece710e376
DEVICE=enp0s3
ONBOOT=yes
PREFIX=24
GATEWAY=192.168.43.1

-n :显示行号

[root@centos8 ~]# grep -n "IP" /etc/sysconfig/network-scripts/ifcfg-enp0s3  
6:IPV4_FAILURE_FATAL=no
7:IPV6INIT=yes
8:IPV6_AUTOCONF=yes
9:IPV6_DEFROUTE=yes
10:IPV6_FAILURE_FATAL=no
11:IPV6_ADDR_GEN_MODE=stable-privacy
16:IPADDR=192.168.43.150

-w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有BOOTPROTO,而我搜寻的只是BOOT,就可以使用-w选项来避免匹配BOOTPROTO

[root@centos8 ~]# grep -w "BOOT" /etc/sysconfig/network-scripts/ifcfg-enp0s3

-c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。

[root@centos8 ~]# grep -v "IP" /etc/sysconfig/network-scripts/ifcfg-enp0s3  
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
NAME=enp0s3
UUID=2ef994b5-508e-4818-8271-5aece710e376
DEVICE=enp0s3
ONBOOT=yes
PREFIX=24
GATEWAY=192.168.43.1
[root@centos8 ~]# grep -c "IP" /etc/sysconfig/network-scripts/ifcfg-enp0s3
7
[root@centos8 ~]# grep -cv "IP" /etc/sysconfig/network-scripts/ifcfg-enp0s3
11

-o :只显示被模式匹配到的字符串。

[root@centos8 ~]# grep -o  "IP" /etc/sysconfig/network-scripts/ifcfg-enp0s3     
IP
IP
IP
IP
IP
IP
IP

–color :将匹配到的内容以颜色高亮显示。

grep在linux系统的用法_IPV6

-A n:显示匹配到的字符串所在的行及其后n行,after

[root@centos8 ~]# grep -A 2  "IP" /etc/sysconfig/network-scripts/ifcfg-enp0s3  
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=2ef994b5-508e-4818-8271-5aece710e376
--
IPADDR=192.168.43.150
PREFIX=24
GATEWAY=192.168.43.1

-B n:显示匹配到的字符串所在的行及其前n行,before

[root@centos8 ~]# grep -B 2  "IP" /etc/sysconfig/network-scripts/ifcfg-enp0s3  
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
--
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.43.150

-C n:显示匹配到的字符串所在的行及其前后各n行,context

[root@centos8 ~]# grep -C 2  "IP" /etc/sysconfig/network-scripts/ifcfg-enp0s3  
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=2ef994b5-508e-4818-8271-5aece710e376
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.43.150
PREFIX=24
GATEWAY=192.168.43.1

位置锚定
^:行首
KaTeX parse error: Undefined control sequence: \< at position 74: … \̲<̲, \b:词首 …"用于匹配空白行

2.egrep
egrep命令用于在文件内查找指定的字符串。egrep执行效果与grep -E相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。egrep是用extended regular expression语法来解读的,而grep则用basic regular expression 语法解读,extended regular expression比basic regular expression的表达更规范。

用法:

[root@centos8 ~]# cd /etc/
[root@centos8 etc]# egrep "Linux" redhat-release os-release services
redhat-release:CentOS Linux release 8.1.1911 (Core)
os-release:NAME="CentOS Linux"
os-release:PRETTY_NAME="CentOS Linux 8 (Core)"
services:nbd 10809/tcp # Linux Network Block Device

找出/etc/fstab文件中一位数或两位数
egrep --color ‘<[0-9]{1,2}>’ /etc/fstab

grep在linux系统的用法_centos_02


3.fgrep

相当于执行 grep 指令加上参数 -F,详见grep命令说明。

Linux fgrep命令用于查找文件里符合条件的字符串。

语法

fgrep [范本样式][文件或目录…]fgrep --color “defaults” /etc/fstab

grep在linux系统的用法_IP_03


阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux