文字處理 grep 正規表示式

2021-10-03 11:26:43 字數 3566 閱讀 2915

-i 區分大小寫

[root@centos7 root2018-07-30]#cat grep_test 

root

root2

zhuzhu2

tom3

[root@centos7 root2018-07-30]#grep -o oo grep_test 

oooo

[root@centos7 root2018-07-30]#grep -v root grep_test 

zhuzhu2

tom3

[root@centos7 root2018-07-30]#grep -b1 root2 grep_test 

root

root2

用在要指定次數的字元後面,用於指定前面的字元要出現的次數

取出ifconfig ens33中的ip位址

這個寫法適合從合法的ip位址中選取出來

[root@centos7 ~]#ifconfig ens33 |grep -o "[[:digit:].]\" |head -n1
df中取出使用率最高的數值

[root@centos7 ~]#df -h | grep "sd" | grep "[0-9]\%" -o |grep -o "[0-9]\" | sort -rn | head -n1

[root@centos7 ~]#df |grep "^/dev/sd" | tr -s " " % |cut -d% -f 5 | sort -nr |head -n 1

17

定位出現的位置

過濾空行

[root@centos7 root2018-07-30]#grep -v "^[[:space:]]*$" google.txt
/etc/passwd中以root開頭的行

[root@centos7 root2018-07-28]#cat /etc/passwd |grep "\列出/etc/下所有目錄,包括子目錄下的所有檔案,以.conf為字尾的檔案的個數

[root@centos7 ~]#ls -r /etc/ |grep ".*\.conf$" |wc -l

449

找出光碟中的rpm包,.rpm前面的型別次數統計

[root@centos7 ~]#ls /misc/cd/packages/ |egrep -o "[[:alnum:]_]+\.rpm$" |cut -d. -f 1 | sort | uniq -c

2223 i686

3117 noarch

4571 x86_64

[root@centos7 ~]#ls /misc/cd/packages/ |egrep -o "[^.]+\.rpm$" |cut -d. -f 1 | sort | uniq -c

2223 i686

3117 noarch

4571 x86_64

e.g.

\(str1\+\(str2\)*\)

\1 : str1\+\(str2\)*

\2 : str2

分組

[root@centos7 root2018-07-30]#echo zhuzhuzhuzhuroot |grep -o "\(zhu\)\+"

zhuzhuzhuzhu

[root@centos7 root2018-07-30]#echo zhuzhuzhuzhuzhuzhu******okokaazhuzhuzhu |grep "\(zhu\)\.*\1\+"

zhuzhuzhuzhuzhuzhu******okokaazhuzhuzhu

建立bash使用者,查詢/etc/passwd中以bash開頭,同時以bash結尾的行

[root@centos7 root2018-07-30]#grep "^\(bash\).*\1$" /etc/passwd

bash:x:2004:2006::/home/bash:/bin/bash

擴充套件,/etc/passwd中,行首是什麼單詞,行末就是什麼單詞的行

[root@centos7 root2018-07-30]#grep "^\(\<[[:alnum:]]\+\>\).*\1$" /etc/passwd

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

bash:x:2004:2006::/home/bash:/bin/bash

備註:

[[:alnum:]]\+ 以任意數字和字母開頭,1次或以上次數,這樣可以找到使用者名稱user_name

\(\\) \鎖定user_name為乙個單詞並對其進行分組

\1$ 表示user_name單詞分組,並以該單詞結束

[root@centos7 ~]#cat /etc/passwd |egrep "^([^:]+).*\b\1$"

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

bash:x:2004:2006::/home/bash:/bin/bash

[root@centos7 root2018-07-30]#grep "^\(\<.*\>\):.*\1$" /etc/passwd

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

bash:x:2004:2006::/home/bash:/bin/bash

用正規表示式取/etc/centos-release中的大版本號

[root@centos7 /]#cat /etc/centos-release |grep -o "[[:digit:]]\+" | head -n1

[root@centos7 root2018-07-28]#cat /etc/centos-release |grep -o " [[:digit:]]\+"

文字處理正規表示式

文字過濾命令 全面搜尋研究正規表示式並顯示出來 grep 命令是一種強大的文字搜尋工具 根據使用者指定的 模式 對目標文字進行匹配檢查 列印匹配到的行 由正規表示式或者字元及基本文字字元所編寫的過濾條件 預設貪婪模式 有就能過濾出來 egrep grep e 擴充套件正規表示式 grep 正規表示式...

正規表示式和文字處理器

fs 指定每行文字的字段分隔符,預設為空格或製表位 nf 當前處理的行的字段個數 nr 當前的行的行號 序數 0 當前的第n個字段 第n列 rs 資料記錄分隔,預設為 n,即每一行一條記錄 逐行讀取文字,預設以空格為分隔符進行分隔,將分隔所得的哥哥字段儲存到內建變數中,並按模式或者條件執行編輯命令 ...

Linux入門 文字處理和正規表示式

1 文字處理基本操作 more less 逐屏顯示文字,一般用在很長的檔案檢視 head tail 檢視檔案頭幾行或者末尾幾行 head ntail nwc word count,對於文字進行計數 wc l 按照回車符計算有多少行wc c 計算有多少單詞tr translate 翻譯字元,可以將乙個...