grep -E = egrep
實驗前提:
- cp /etc/passwd /mnt
- 切換到mnt目錄下,編輯passwd檔案中的内容,隻儲存部分内容即可
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 的使用 注意:當沒有使用-E 時
- 數字等用法
2.grep字元數量比對規則
指令 | 作用 |
---|---|
^westos | 以westos開頭 |
westos$ | 以westos結尾 |
w. . . .s | w開頭s結尾中間4個任意字元 |
. . . . .s | s結尾前面5個任意字元 |
…代表字元的個數
練習:
指令 | 作用 |
---|---|
* | 字元出現0到任意次 |
? | 0到1次 |
+ | 1到任意次 |
{n} | n次 |
{m,n} | m到n次 |
{0,n} | 0-n次 |
{,n} | 0-n次 |
{m,} | 最少m次 |
(lee){2} | ee字元串出現2次 |
練習:
練習腳本:
問題: 請顯示系統中能被su指令切換的使用者名稱
第一次嘗試:
[[email protected] ~]# ls /home
liyanqiu westos
[[email protected] ~]#
此指令的缺點在于:不能出現root使用者
第二次嘗試(腳本):
vim show_login.sh
#!/bin/bash
grep bash$ /etc/passwd
此方法的缺點:有些使用者可能是以sh結尾的,這樣就會遺漏
最後嘗試(腳本)
vim show_login.sh
#!/bin/bash
grep -E "bash$|csh$|tcsh$|csh$" /etc/passwd | cut -d : -f 1