命令 | 說明 |
---|---|
awk | 用于文本處理的解釋性程序設(shè)計語言,通常被作為數(shù)據(jù)提取和報告的工具。 |
cut | 用于將每個輸入文件(如果沒有指定文件則為標(biāo)準(zhǔn)輸入)的每行的指定部分輸出到標(biāo)準(zhǔn)輸出。 |
grep | 用于搜索一個或多個文件中匹配指定模式的行。 |
tar | 用于歸檔文件的應(yīng)用程序。 |
head | 用于讀取文件的開頭部分(默認是 10 行)。如果沒有指定文件,則從標(biāo)準(zhǔn)輸入讀取。 |
paste | 用于合并文件的行。 |
sed | 用于過濾和轉(zhuǎn)換文本的流編輯器。 |
sort | 用于對文本文件的行進行排序。 |
split | 用于將文件分割成塊。 |
strings | 用于打印文件中可打印的字符串。 |
tac | 與 cat 命令的功能相反,用于倒序地顯示文件或連接文件。 |
tail | 用于顯示文件的結(jié)尾部分。 |
tee | 用于從標(biāo)準(zhǔn)輸入讀取內(nèi)容并寫入到標(biāo)準(zhǔn)輸出和文件。 |
tr | 用于轉(zhuǎn)換或刪除字符。 |
uniq | 用于報告或忽略重復(fù)的行。 |
wc | 用于打印文件中的總行數(shù)、單詞數(shù)或字節(jié)數(shù)。 |
接下來,我們通過幾個實例來演示一下過濾器的使用。
關(guān)于 awk 命令的具體用法,請大家自行學(xué)習(xí),本節(jié)我們我們僅通過幾個簡單的實例來了解一下 awk 命令在管道中的使用。
實例1
查看系統(tǒng)中的所有的賬號名稱,并按名稱的字母順序排序。
[jb51.net]$ awk -F: '{print $1}' /etc/passwd | sort adm apache avahi avahi-autoipd bin daemon dbus ftp games ...
在上例中,使用冒號:作為列分隔符,將文件 /etc/passwd 的內(nèi)容分為了多列,并打印了第一列的信息(即用戶名),然后將輸出通過管道發(fā)送到了 sort 命令。
實例2
列出當(dāng)前賬號最常使用的 10 個命令。
[jb51.net]$ history | awk '{print $2}' | sort | uniq -c | sort -rn | head 140 echo 75 man 71 cat 63 su 53 ls 50 vi 47 cd 40 date 26 let 25 paste
在上例中,history 命令將輸出通過管道發(fā)送到 awk 命令,awk 命令默認使用空格作為列分隔符,將 history 的輸出分為了兩列,并把第二列內(nèi)容作為輸出通過管道發(fā)送到了 sort 命令,使用 sort 命令進行排序后,再將輸出通過管道發(fā)送到了 uniq 命令,使用 uniq 命令 統(tǒng)計了歷史命令重復(fù)出現(xiàn)的次數(shù),再用 sort 命令將 uniq 命令的輸出按照重復(fù)次數(shù)從高到低排序,最后使用 head 命令默認列出前 10 個的信息。
實例3
顯示當(dāng)前系統(tǒng)的總內(nèi)存大小,單位為 KB。
[jb51.net]$ free | grep Mem | awk '{print $2}' 2029860
cut 命令被用于文本處理。你可以使用這個命令來提取文件中指定列的內(nèi)容。
實例1
查看系統(tǒng)中登錄 Shell 是“/bin/bash”的用戶名和對應(yīng)的用戶主目錄的信息:
[jb51.net]$ grep "bin/bash" /etc/passwd | cut -d: -f1,6 root:/root mozhiyan:/home/mozhiyan
如果你對 Linux 系統(tǒng)有所了解,你會知道,/ctc/passwd 文件被用來存放用戶賬號的信息,此文件中的每一行會記錄一個賬號的信息,每個字段之間用冒號分隔,第一個字段即是賬號的賬戶名,而第六個字段就是賬號的主目錄的路徑。
實例2
查看當(dāng)前機器的CPU類型。
[jb51.net]$ cat /proc/cpuinfo | grep name | cut -d: -f2 | uniq Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
上例中,執(zhí)行命令cat /proc/cpuinfo | grep name得到的內(nèi)容如下所示:
[jb51.net]$ cat /proc/cpuinfo | grep name model name : Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz model name : Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz model name : Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz model name : Intel(R) Core(TM) i5-2520M CPU 0 2.50GHz
然后,我們使用 cut 命令將上述輸出內(nèi)容以冒號作為分隔符,將內(nèi)容分為了兩列, 并顯示第二列的內(nèi)容,最后使用 uniq 命令去掉了重復(fù)的行。
實例3
查看當(dāng)前目錄下的子目錄數(shù)。
[jb51.net]$ ls -l | cut -c 1 | grep d | wc -l 5
上述管道命令主要做了如下操作:
grep 命令是在管道中比較常用的一個命令。
實例1
查看系統(tǒng)日志文件中的錯誤信息。
[jb51.net]$ grep -i "error:" /var/log/messages | less
實例2
查看系統(tǒng)中 HTTP 服務(wù)的進程信息。
[jb51.net]$ ps auxwww | grep httpd apache 18968 0.0 0.0 26472 10404 ? S Dec15 0:01 /usr/sbin/httpd apache 18969 0.0 0.0 25528 8308 ? S Dec15 0:01 /usr/sbin/httpd apache 18970 0.0 0.0 26596 10524 ? S Dec15 0:01 /usr/sbin/httpd
實例3
查找我們的程序列表中所有命令名中包含關(guān)鍵字 zip 的命令。
[jb51.net]$ ls /bin /usr/bin | sort | uniq | grep zip bunzip2 bzip2 bzip2recover gunzip gzip
實例4
查看系統(tǒng)安裝的 kernel 版本及相關(guān)的 kernel 軟件包。
[jb51.net]$ rpm -qa | grep kernel kernel-2.6.18-92.e15 kernel-debuginfo-2.6.18-92.e15 kernel-debuginfo-common-2.6.18-92.e15 kernel-devel-2.6.18-92.e15
實例5
查找 /etc 目錄下所有包含 IP 地址的文件。
[jb51.net]$ find /etc -type f -exec grep '[0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*' {} \;
tar 命令是 Linux 系統(tǒng)中最常用的打包文件的程序。
實例1
你可以使用 tar 命令復(fù)制一個目錄的整體結(jié)構(gòu)。
[jb51.net]$ tar cf - /home/mozhiyan | ( cd /backup/; tar xf - )
實例2
跨網(wǎng)絡(luò)地復(fù)制一個目錄的整體結(jié)構(gòu)。
[jb51.net]$ tar cf - /home/mozhiyan | ssh remote_host "( cd /backup/; tar xf - )"
實例3
跨網(wǎng)絡(luò)地壓縮復(fù)制一個目錄的整體結(jié)構(gòu)。
[jb51.net]$ tar czf - /home/mozhiyan | ssh remote_host "( cd /backup/; tar xzf - )"
實例4
檢査 tar 歸檔文件的大小,單位為字節(jié)。
[jb51.net]$ cd /; tar cf - etc | wc -c 215040
實例5
檢查 tar 歸檔文件壓縮為 tar.gz 歸襠文件后所占的大小。
[jb51.net]$ tar czf - etc.tar | wc -c 58006
實例6
檢查 tar 歸檔文件壓縮為 tar.bz2 歸襠文件后所占的大小。
[jb51.net]$ tar cjf - etc.tar | wc -c 50708
有時,你不需要一個命令的全部輸出,可能只需要命令的前幾行輸出。這時,就可以使用 head 命令,它只打印命令的前幾行輸出。默認的輸出行數(shù)為 10 行。
實例1
顯示 ls 命令的前 10 行輸出。
[jb51.net]$ ls /usr/bin | head addftinfo afmtodit apropos arch ash awk base64 basename bash bashbug
實例2
顯示 ls 命令的前 5 行內(nèi)容。
[jb51.net]$ ls / | head -n 5 bin cygdrive Cygwin.bat Cygwin.ico Cygwin-Terminal.ico
uniq 命令用于報告或刪除重復(fù)的行。我們將使用一個測試文件進行管道中使用 uniq 命令的實例講解,其內(nèi)容如下所示:
[jb51.net]$ cat testfile This line occurs only once. This line occurs twice. This line occurs twice. This line occurs three times. This line occurs three times. This line occurs three times.
實例1
去掉輸出中重復(fù)的行。
[jb51.net]$ sort testfile | uniq This line occurs only once. This line occurs three times. This line occurs twice.
實例2
顯示輸出中各重復(fù)的行出現(xiàn)的次數(shù),并按次數(shù)多少倒序顯示。
[jb51.net]$ sort testfile | uniq -c | sort -nr 3 This line occurs three times. 2 This line occurs twice. 1 This line occurs only once.
wc 命令用于統(tǒng)計包含在文本流中的字符數(shù)、單同數(shù)和行數(shù)。
實例1
統(tǒng)計當(dāng)前登錄到系統(tǒng)的用戶數(shù)。
[jb51.net]$ who | wc -l
實例2
統(tǒng)計當(dāng)前的 Linux 系統(tǒng)中的進程數(shù)。
[jb51.net]$ ps -ef | wc -l
到此這篇關(guān)于Shell過濾器的具體使用的文章就介紹到這了,更多相關(guān)Shell過濾器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標(biāo)簽:黔南 河池 河北 淮南 通遼 常州 黔南 隴南
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Shell過濾器的具體使用》,本文關(guān)鍵詞 Shell,過濾器,的,具體,使用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。