搜索命令grep

shell script 是利用 shell 的功能所寫的一個『程序 (program)』,這個程序是使用純文字文件,將一些 shell 的語法與指令寫在裏面, 搭配正規表示法、管線命令與數據流重導向等功能,以達到咱們所想要的處理目的。
擷取命令: cut, grep
? cut
[root@linux ~]# cut -d'分隔字符' -f fields
[root@linux ~]# cut -c 字符區間
參數:
-d :後面接分隔字符。與 -f 一塊兒使用;
-f :依據 -d 的分隔字符將一段訊息分割成爲數段,用 -f 取出第幾段的意思;
-c :以字符 (characters) 的單位取出固定字符區間;
範例:
範例一:將 PATH 變量取出,我要找出第三個路徑。
[root@linux ~]# echo $PATH
/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games:
[root@linux ~]# echo $PATH | cut -d ':' -f 5
# 嘿嘿!如此一來,就會出現 /usr/local/bin 這個目錄名稱!
# 由於咱們是以 : 做爲分隔符,第五個就是 /usr/local/bin 啊!
# 那麼若是想要列出第 3 與第 5 呢?,就是這樣:
[root@linux ~]# echo $PATH | cut -d ':' -f 3,5
範例二:將 export 輸出的訊息,取得第 12 字符之後的全部字符串
[root@linux ~]# export
declare -x HISTSIZE="1000"
declare -x INPUTRC="/etc/inputrc"
declare -x KDEDIR="/usr"
declare -x LANG="zh_TW.big5"
......其它省略......
[root@linux ~]# export | cut -c 12-
HISTSIZE="1000"
INPUTRC="/etc/inputrc"
KDEDIR="/usr"
LANG="zh_TW.big5"
......其它省略......
# 知道怎麼回事了吧?用 -c 能夠處理比較具備格式的輸出數據!
# 咱們還能夠指定某個範圍的值,例如第 12-20 的字符,就是 cut -c 12-20 等等!
範例三:用 last 將這個月登入者的信息中,僅留下使用者大名
[root@linux ~]# last
vbird tty1 192.168.1.28 Mon Aug 15 11:55 - 17:48 (05:53)
vbird tty1 192.168.1.28 Mon Aug 15 10:17 - 11:54 (01:37)
[root@linux ~]# last | cut -d ' ' -f 1
# 用 last 能夠取得最近一個月登入主機的使用者信息,
# 而咱們能夠利用空格符的間隔,取出第一個信息,就是使用者帳號囉!
# 可是由於 vbird tty1 之間空格有好幾個,並不是僅有一個,因此,若是要找出
# tty1 其實不能以 cut -d ' ' -f 1,2 喔!輸出的結果會不是咱們想要的。linux

? grep
[root@linux ~]# grep [-acinv] '搜尋字符串' filename
參數:
-a :將 binary 檔案以 text 檔案的方式搜尋數據
-c :計算找到 '搜尋字符串' 的次數
-i :忽略大小寫的不一樣,因此大小寫視爲相同
-n :順便輸出行號
-v :反向選擇,亦即顯示出沒有 '搜尋字符串' 內容的那一行!
範例:
範例一:將 last 當中,有出現 root 的那一行就取出來;
[root@linux ~]# last | grep 'root'
範例二:與範例一相反,只要沒有 root 的就取出!
[root@linux ~]# last | grep -v 'root'
範例三:在 last 的輸出訊息中,只要有 root 就取出,而且僅取第一欄
[root@linux ~]# last | grep 'root' |cut -d ' ' -f1
# 在取出 root 以後,利用上個指令 cut 的處理,就可以僅取得第一欄囉!shell

相關文章
相關標籤/搜索