1. 程式人生 > >文本處理三劍客 grep

文本處理三劍客 grep

空白 單個 conf pass grep -v 管道 grep -E num 制表符

Grep (基於行的過濾)--color=auto 關鍵字高亮顯示

命令選項:
? -v: 顯示不被pattern匹配到的行
? -i: 忽略字符大小寫
? -n:顯示匹配的行號
? -c: 統計匹配的行數
? -o: 僅顯示匹配到的字符串
? -q: 靜默模式,不輸出任何信息
? -A #: after, 後#行
? -B #: before, 前#行
? -C #:context, 前後各#行
? -e:實現多個選項間的邏輯or關系 grep –e ‘cat ’ -e ‘dog’ file ? -w:匹配整個單詞 ? -E:使用ERE ? -F:相當於fgrep,不支持正則表達式

正則表達式:需加雙引號或單引號

文件名通配符當中 * 表示 0或多個任意字符 ? 表示任何一個單一字符

正則當中字符匹配:

.  表示任何字符
[]   匹配指定範圍內的任意單個字符
[^]  匹配指定範圍外的任意單個字符
[:alnum:] 字母和數字 
[:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z
[:lower:] 小寫字母  [a-z]  
[:upper:] 大寫字母  [A-Z]
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的範圍廣)
[:cntrl:] 不可打印的控制字符(退格、刪除、警鈴...)

[[[
[:xdigit:]十六進制數字

[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 標點符號
[A-Z0-9] 表示大寫字母或數字

次數匹配

 匹配次數:用在要指定次數的字符後面,用於指定前面的字符要出現的次數
    * 匹配前面的字符任意次,包括0次
        貪婪模式:盡可能長的匹配
    .* 任意長度的任意字符
    \? 匹配其前面的字符0或1次
    \+ 匹配其前面的字符至少1次
    \{n\} 匹配前面的字符n次
    \{m,n\} 匹配前面的字符至少m次,至多n次
    \{,n\} 匹配前面的字符至多n次
    \{n,\} 匹配前面的字符至少n次

位置錨定:定位出現的位置

^ 行首錨定,用於模式的最左側
$ 行尾錨定,用於模式的最右側
^PATTERN$ 用於模式匹配整行
^$ 空行
^[[:space:]]$ 空白行
grep -v "^[[:space:]]
$" passwd 去除文件中的空白行
\< 或 \b 詞首錨定,用於單詞模式的左側
\> 或 \b 詞尾錨定;用於單詞模式的右側
\<PATTERN\> 匹配整個單詞
Ifconfig 查ipv4地址:
ifconfig |grep "^ens33" -A1 |grep -o inet."[[:digit:]].[[:digit:]].[[:digit:]].[[:digit:]]"

1、 顯示/proc/meminfo文件中以大小s開頭的行(要求:使用兩種方法)
grep -i "^s" /proc/meminfo -i 不區分大小寫
grep -e ^s -e ^S /proc/meminfo -e 或
2、 顯示/etc/passwd文件中不以/bin/bash結尾的行
grep -v "/bin/bash$" -v 顯示不被匹配的行
3、 顯示用戶rpc默認的shell程序
grep "^\<rpc\>" /etc/passwd |cut -d: -f7 行首錨定^ \<rpc\> 匹配整個單詞 正則表達式需“”號 然後輸入路徑 管道符| 最後cut -d:指明分隔符:抽取第7列
4、 找出/etc/passwd中的兩位或三位數
-o: 僅顯示匹配到的字符串
grep -o "[0-9]{2,3}" /etc/passwd {2,3}表示匹配前面的字符(0-9)至少m次,至多n次
5、 顯示CentOS7的/etc/grub2.cfg文件中,至少以一個空白字符開頭的且後面 存非空白字符的行
grep ^"[[:blank:]]+"[[:graph:]] /etc/grub2.cfg
6、 找出“netstat -tan”命令的結果中以‘LISTEN’後跟任意多個空白字符結 尾的行
netstat -tan|grep "\<LISTEN\>[[:blank:]]*"
7、 顯示CentOS7上所有系統用戶的用戶名和UID
grep -v "[[:digit:]]"{4} /etc/passwd|cut -d: -f1,3
8、 添加用戶bash、testbash、basher、sh、nologin(其shell為 /sbin/nologin),找出/etc/passwd用戶名同shell名的行

9、利用df和grep,取出磁盤各分區利用率,並從大到小排序
df |tr -s " "|cut -d" " -f5,6|sort -r

文本處理三劍客 grep