410月/110
Linux
管道命令
管道命令在Linux中十分有用,管道命令操作符是“|”,它能將經由前一個命令輸出的標准輸出,作為管道後一個命令的標准輸入。
1、grep命令
grep是一個文本搜索工具,用於在文本或標准輸入中查找指定的匹配,並輸出到標准輸出上。
一般格式:
grep [選項] 模式 [文件...]
常用選項:
-E, --extended-regexp :將查找模式解釋成擴展的正則表達式。
-F, --fixed-strings :將查找模式解釋成單純的字符串。
-c, --count :只是輸出文件中匹配的行的總數
-i, --ignore-case :忽略大小寫。
-n, --line-number :輸出時加上行號。
-r, --recursive :以遞歸方式查詢目錄下的所有子目錄中的文件。
-v, --invert-match :只顯示不包含匹配的行。
舉例:
1)查找是否安裝過httpd
# rpm -qa | grep httpd
2)在hi.txt中查找字符串Hello
# grep 'Hello' hi.txt
或
# cat hi.txt | grep 'Hello'
2、cut命令
cut命令用於截取字符串,顯示到標准輸出上。
一般格式:
cut [選項]... [文件]...
常用選項:
-b, --bytes=LIST :以字節為單位。
-c, --characters=LIST :以字符為單位。
-d, --delimiter=DELIM :表示分隔符,默認情況下為TAB。
-f, --fields=LIST :以字段為單位。
截取范圍:
N :只有第N項
N- :從第N項一直到行尾
N-M :從第N項到第M項(包括M)
-M :從一行的開始到第M項(包括M)
- :從一行的開始到結束的所有項
舉例:
1)找出passwd中的所有用戶名
# cat /etc/passwd | cut -d ':' -f1
root
bin
daemon
adm
lp
...
smmsp
sshd
apache
rpc
pcap
nscd
rpm
named
或
# cut -d ':' -f1 /etc/passwd 一樣效果。
2)查看vps上有哪些IP ssh登陸失敗,並計算次數
# lastb | cut -c 23-38 | uniq -c
9 213.229.124.66
6 178.162.239.192
1 121.9.245.177
8 147.213.138.201
11 119.161.208.37
61 220.225.70.251
6 123.30.108.208
3 h-sys.biz
7 220.225.70.251
6 61.111.18.25
...
3、sort命令
sort命令用於將文件內容排序,顯示到標准輸出上。排序是根據某個或多個關鍵字進行排序。
一般格式:
sort [選項]... [文件]...
常用選項:
-b, --ignore-leading-blanks :忽略每行前面開始出的空格字符和制表符。
-c, --check :檢查文件是否已經按照順序排序。
-d, --dictionary-order :排序時,處理英文字母、數字及空格字符外,忽略其他的字符。
-f, --ignore-case :忽略大小寫。
-i, --ignore-nonprinting :排序時,除了040至176之間的ASCII字符外,忽略其他的非打印字符。
-m, --merge :將幾個排序好的文件進行合並。
-M, --month-sort :規定月份的比較次序是(未知)<”JAN”<”FEB”<…<”DEC”。 -n, --numeric-sort :依照數值的大小排序。 -r, --reverse:按逆序排序。默認排序輸出是按升序排序的。 -t :字符將指定的“字符”作為字段間的分隔符,默認為TAB。 -u, --unique :與-c選項一起用,嚴格地按順序檢查;否則,對排序後的重復行只輸出第一行。 -k n1[,n2] :指定從文本行的第n1字段開始至第n2字段(不包括第n2字段)中間的內容作為排序關鍵字。如果沒有n2,則關鍵字是從第n1個字段到行尾的所有字段。n1和n2可以是小數形式。如”x.y”,x表示第x字段,y表示第x字段中的第y個字符。字段和字符的文職都是從1開始算起的。
舉例: 1)將/etc/passwd中按第三列uid的數值大小排序輸出 # cat /etc/passwd | sort -n -t ':' -k 3 4、uniq命令 uniq命令將排序好後文件中的重復行去除。 一般格式: uniq [選項]... [INPUT [OUTPUT]] 常用選項: -c, --count :顯示輸出時,在每行的行首加上該行在文件中出現的次數。 -d, --repeated :只顯示重復行。 -i, --ignore-case :忽略大小寫。 -f, --skip-fields=N
:忽略比較前N個字段。 -s, --skip-chars=N :忽略比較前N個字符。 -u, --unique :只顯示文件中不重復的行。 舉例: 1)查看/etc/passwd中,所有群組gid及它們的用戶數 # cat /etc/passwd | cut -d ':' -f4 | sort -n | uniq -c 參考資料: http://fhqdddddd.blog.163.com/blog/static/1869915420112141191453/
http://xu020408.blog.163.com/blog/static/265489200972585911657/