-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 翻譯字元,可以將乙個...