grep在linux系統的用法

2021-10-22 06:35:19 字數 4790 閱讀 4772

複習

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     

ipip

ipip

ipip

ip

–color :將匹配到的內容以顏色高亮顯示。

-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: … \̲

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檔案中一位數或兩位數

相當於執行 grep 指令加上引數 -f,詳見grep命令說明。

linux fgrep命令用於查詢檔案裡符合條件的字串。

語法fgrep [範本樣式][檔案或目錄…]

linux的grep的用法

grep a after 錨定行的開始 如 grep 匹配所有以grep開頭的行。錨定行的結束 如 grep 匹配所有以grep結尾的行。匹配乙個非換行符的字元 如 gr.p 匹配gr後接乙個任意字元,然後是p。匹配零個或多個先前字元 如 grep 匹配所有乙個或多個空格後緊跟grep的行。一起用代...

linux系統grep命令用法詳解(二)

1.作用 linux系統中grep命令是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹 配的行列印出來。grep全稱是global regular expr ession print,表示全域性正規表示式版本,它的使用許可權是所有使用者。2.格式 grep options 3.主要引數 ...

linux中grep的用法

過濾多個關鍵字 grep e root mysql etc passwd root 0 0 root root bin bash operator 11 0 operator root sbin nologin mysql 500 500 home mysql sbin nologin 排除多個關鍵...