選取命令就是將一段數據通過分析後,取出咱們所想要的。或者是經由分析關鍵詞,取得咱們所想要的那一行!通常來講,選取命令一般是針對一行一行的數據來進行分析的, 並非整篇信息分析。
cut
cut命令能夠將一段信息的某一段選取出來,信息處理一行爲單位。CUT命令使用格式以下:apache
[root@www ~]# cut -d'分隔字符' -f fields <==用於有特定分隔字符 [root@www ~]# cut -c 字符區間 <==用於排列整齊的信息 選項與參數: -d :後面接分隔字符。與 -f 一塊兒使用; -f :依據 -d 的分隔字符將一段信息分割成爲數段,用 -f 取出第幾段的意思; -c :以字符 (characters) 的單位取出固定字符區間;
範例一:將 PATH 變量取出,我要找出第五個路徑。bash
[root@www ~]# echo $PATH | cut -d ':' -f 5 # 如同上面的數字顯示,咱們是以『 : 』做爲分隔,所以會出現 /usr/local/bin # 那麼若是想要列出第 3 與第 5 呢?,就是這樣: [root@www ~]# echo $PATH | cut -d ':' -f 3,5
範例二:將 export 輸出的信息,取得第 12 字符之後的全部字符串字體
[root@www ~]# export declare -x HISTSIZE="1000" declare -x INPUTRC="/etc/inputrc" declare -x KDEDIR="/usr" declare -x LANG="zh_TW.big5" .....(其餘省略)..... # 注意看,每一個數據都是排列整齊的輸出!若是咱們不想要『 declare -x 』時, # 就得這麼作: [root@www ~]# export | cut -c 12- HISTSIZE="1000" INPUTRC="/etc/inputrc" KDEDIR="/usr" LANG="zh_TW.big5"
CUT -d命令適合操做具備固定分割符的文本,用 -c 能夠處理比較具備格式的輸出數據,還能夠指定某個範圍的值,例如第 12-20 的字符,就是 cut -c 12-20。cut 主要的用途在於將『同一行裏面的數據進行分解!』最常使用在分析一些數據或文字數據的時候! 這是由於有時候咱們會以某些字符看成分割的參數,而後來將數據加以切割,以取得咱們所須要的數據。 鳥哥也很常使用這個功能呢!尤爲是在分析 log 文件的時候!不過,cut 在處理多空格相連的數據時,可能會比較吃力一點。編碼
grepspa
cut是將一行信息當中,取出某部分咱們想要的,而grep則是分析一行信息, 若當中有咱們所須要的信息,就將該行拿出來。其使用方法以下:blog
[root@www ~]# grep [-acinv] [--color=auto] '搜尋字符串' filename 選項與參數: -a :將 binary 文件以 text 文件的方式搜尋數據 -c :計算找到 '搜尋字符串' 的次數 -i :忽略大小寫的不一樣,因此大小寫視爲相同 -n :順便輸出行號 -v :反向選擇,亦即顯示出沒有 '搜尋字符串' 內容的那一行! --color=auto :能夠將找到的關鍵詞部分加上顏色的顯示喔!
具體的操做實例以下:排序
範例一:將 last 當中,有出現 root 的那一行就取出來; [root@www ~]# last | grep 'root' 範例二:與範例一相反,只要沒有 root 的就取出! [root@www ~]# last | grep -v 'root' 範例三:在 last 的輸出信息中,只要有 root 就取出,而且僅取第一欄 [root@www ~]# last | grep 'root' |cut -d ' ' -f1 # 在取出 root 以後,利用上個命令 cut 的處理,就可以僅取得第一欄囉! 範例四:取出 /etc/man.config 內含 MANPATH 的那幾行 [root@www ~]# grep --color=auto 'MANPATH' /etc/man.config ....(前面省略).... MANPATH_MAP /usr/X11R6/bin /usr/X11R6/man MANPATH_MAP /usr/bin/X11 /usr/X11R6/man MANPATH_MAP /usr/bin/mh /usr/share/man
排序命令: sort, wc, uniqci
sort命令能夠進行排序,並且能夠依據不一樣的數據型態來排序,排序的字符與語系的編碼有關。字符串
[root@www ~]# sort [-fbMnrtuk] [file or stdin] 選項與參數: -f :忽略大小寫的差別,例如 A 與 a 視爲編碼相同; -b :忽略最前面的空格符部分; -M :以月份的名字來排序,例如 JAN, DEC 等等的排序方法; -n :使用『純數字』進行排序(默認是以文字型態來排序的); -r :反向排序; -u :就是 uniq ,相同的數據中,僅出現一行表明; -t :分隔符,默認是用 [tab] 鍵來分隔; -k :以那個區間 (field) 來進行排序的意思
範例一:我的帳號都記錄在 /etc/passwd 下,請將帳號進行排序。input
[root@www ~]# cat /etc/passwd | sort adm:x:3:4:adm:/var/adm:/sbin/nologin apache:x:48:48:Apache:/var/www:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin
範例二:/etc/passwd 內容是以 : 來分隔的,我想以第三欄來排序,該如何?
[root@www ~]# cat /etc/passwd | sort -t ':' -k 3 root:x:0:0:root:/root:/bin/bash uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin
看到特殊字體的輸出部分了吧?怎麼會這樣排列啊?若是是以文字型態來排序的話,本來就會是這樣,想要使用數字排序,使用-n來以數字來排序。
# cat /etc/passwd | sort -t ':' -k 3 -n
uniq
uniq命令能夠用來去除重複的數據,僅僅保留一行,其使用方法以下:
[root@www ~]# uniq [-ic] 選項與參數: -i :忽略大小寫字符的不一樣; -c :進行計數
範例一:使用 last 將帳號列出,僅取出帳號欄,進行排序後僅取出一位;
[root@www ~]# last | cut -d ' ' -f1 | sort | uniq
範例二:承上題,若是我還想要知道每一個人的登錄總次數呢?
[root@www ~]# last | cut -d ' ' -f1 | sort | uniq -c 1 12 reboot 41 root 1 wtmp
UNIQ這個命令用來將重複的行刪除掉只顯示一個,舉個例子來講, 你要知道這個月份登錄你主機的用戶有誰,而不在意他的登錄次數,那麼就使用上面的範例, (1)先將全部的數據列出;(2)再將人名獨立出來;(3)通過排序;(4)只顯示一個! 因爲這個命令是在將重複的東西減小,因此固然須要『配合排序過的文件』來處理囉!
wc
若是想要知道文件裏面有多少字?多少行?多少字符的話能夠利用 wc 這個命令來達成,WC能夠幫咱們計算輸出的信息的總體數據。其使用方法以下:
[root@www ~]# wc [-lwm] 選項與參數: -l :僅列出行; -w :僅列出多少字(英文單字); -m :多少字符;
範例一:那個 /etc/man.config 裏面到底有多少相關字、行、字符數?
[root@www ~]# cat /etc/man.config | wc 141 722 4617
輸出的三個數字中,分別表明: 行、字數、字符數