天天看點

shell中的文本處理工具之grep

grep -E = egrep

實驗前提:

  • cp /etc/passwd /mnt
  • 切換到mnt目錄下,編輯passwd檔案中的内容,隻儲存部分内容即可
    shell中的文本處理工具之grep

1.grep 格式

grep 比對條件 處理檔案
           
指令 作用
grep root passwd 過濾root關鍵字
grep ^root passwd 以root開頭
grep root$ passwd 以root結尾
grep -i root passwd 忽略大小寫
grep -E “<root” passwd root字元之前不能有字元
grep -E “root>” passwd root字元之後不能有字元
grep -數字 顯示過濾行以及上面幾行和下面幾行
grep -n 顯示比對的行所在行号
grep -A 顯示過濾行以及下面幾行
grep -B 顯示過濾行以及上面幾行
grep -v 反向過濾,顯示除了比對行以外的其他行

練習:

  • -i與-E 的使用
    shell中的文本處理工具之grep
    注意:當沒有使用-E 時
    shell中的文本處理工具之grep
  • 數字等用法
    shell中的文本處理工具之grep

2.grep字元數量比對規則

指令 作用
^westos 以westos開頭
westos$ 以westos結尾
w. . . .s w開頭s結尾中間4個任意字元
. . . . .s s結尾前面5個任意字元

…代表字元的個數

練習:

shell中的文本處理工具之grep
指令 作用
* 字元出現0到任意次
0到1次
+ 1到任意次
{n} n次
{m,n} m到n次
{0,n} 0-n次
{,n} 0-n次
{m,} 最少m次
(lee){2} ee字元串出現2次

練習:

shell中的文本處理工具之grep
shell中的文本處理工具之grep
shell中的文本處理工具之grep

練習腳本:

問題: 請顯示系統中能被su指令切換的使用者名稱

第一次嘗試:

[[email protected] ~]# ls /home
liyanqiu  westos
[[email protected] ~]#
           

此指令的缺點在于:不能出現root使用者

第二次嘗試(腳本):

vim show_login.sh

#!/bin/bash
	grep bash$ /etc/passwd
           

此方法的缺點:有些使用者可能是以sh結尾的,這樣就會遺漏

shell中的文本處理工具之grep

最後嘗試(腳本)

vim show_login.sh

#!/bin/bash
grep  -E "bash$|csh$|tcsh$|csh$" /etc/passwd | cut -d : -f 1
           
shell中的文本處理工具之grep

繼續閱讀