正則介紹_grep工具

grep 工具

  • 語法grep [-cinvABC] 'word' filename

-c 行數 -i 不區分大小寫 -n 顯示行號 -v 取反,將除了其意外的過濾並顯示出來 -r 遍歷全部子目錄 -A 後面跟數字,過濾出符合要求的行以及下面n行 -B 同上,過濾出符合要求的行以及上面n行 -C 同上,同時過濾出符合要求的行以及上下各n行php

grep工具具體用法示例

  • 概覽
  • 注:作實驗時,通常吧文件複製到一個實驗目錄,不直接修改文件

特殊符號**^**:放在括號裏面是取反,外面是以什麼開頭
例如 [^0-9] 那就是非數字(包括字母+特殊符號);
例如[^a-zA-Z] 那就是非字母(包括數字+特殊符號)
例如[^0-9a-zA-Z]那就是非數字字母(特殊符號)centos

grep -n 'root' /etc/passwd
grep -nv 'nologin' /etc/passwd
grep '[0-9]'/etc/inittab
grep -v '[0-9]'/etc/inittab
grep -v '^#' /etc/inittab
grep -v '^#' /etc/inittab|grep -v  '^$'
grep '^[^a-zA-Z]' test.txt
grep 'r.o' test.txt    //.表示匹配任意字符
grep 'oo*' test.txt    //*表示匹配其左邊0到n個重複的字符
grep '.*' test.txt     //.*表示匹配全部字符,包括空行
grep 'o\{2\}' /etc/passwd     //{}表示其前面字符的一個範圍
  • 示例1.
[root@centos001 grep]# grep '[0-9]' passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@centos001 grep]# grep -v '[0-9]' passwd 
[root@centos001 grep]#
  • 示例2.過濾是否帶有#號的文件,
[root@centos001 grep]# grep -n '^#' inittab //查看帶有#的
1:# inittab is no longer used when using systemd.
[root@centos001 grep]# grep -nv '^#' inittab //查看沒有#號的
9:kJAHkladh
  • 示例3.特殊符號^
[root@centos001 grep]# grep '[^0-9]' inittab   //過濾並列出除了數字的字符
# inittab is no longer used when using systemd.
[root@centos001 grep]# grep '^[^0-9]' inittab         //過濾並列出除了數字開頭的字符
# inittab is no longer used when using systemd.
[root@centos001 grep]# grep -nv '^[^0-9]' inittab  //過濾並列出與上面相反的內容
8:123123421
  • 示例4.使用.*匹配指定字符串
[root@centos001 grep]# grep 'r.o' passwd   //這個點表明任意字符
root:x:0:0:root:/root:/bin/bash
[root@centos001 grep]#  grep 'aming.*bash' passwd  //在。*首位輸入字符串的首尾名稱
aming:x:1001:1007::/home/aming:/bin/bash

egrep

  • 介紹:egrep爲grep的擴展版本
  • 概覽
grep 'o\{2\}' /etc/passwd  //指定要過濾字符的出現字數 注:這個必須加上轉義字符\
 egrep 'o{2}' /etc/passwd   //egrep可不用加\
 egrep 'o+' /etc/passwd      //過濾一個或多個指定的字符,匹配一個或多個+號前面的字符
 egrep 'oo?' /etc/passwd     //過濾0個或一個指定字符,?前的字符爲0或1
 egrep 'root|nologin' /etc/passwd     //豎線表示或者的意思
 egrep '(oo){2}' /etc/passwd
  • 示例:特殊符號+,過濾一個或多個指定字符
[root@centos001 grep]#  grep 'o+a' passwd        //這裏能看到grep是不能和+號一塊兒使用的
[root@centos001 grep]# egrep 'o+m' passwd         // 指定過濾
user1:x:1000:1000::/home/user1:/bin/bash

擴展

  • 把一個目錄下,過濾全部*.php文檔中含有eval的行
grep -r --include="*.php" 'eval' /data/
相關文章
相關標籤/搜索