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/