先看sort
1.sort 主要是三个命令参数 -n,u,r,h
-n 按照数字进行排序,默认是按照字符进行排序的
-u 去除相同的字符,这个参数等同于 sort -u < ===== > sort|uniq
-r 就是按照逆序排序,不加这个参数,我们默认时按照升序排的。加上后就是降序。
-h 按照人类可识别的逻辑进行排序,例如 1k,2g等
具体看个例子本,建立一个文本名字为:num
2
3
6
3
8
9
2
17
-------------------------------
sort num inter12@inter12:~/myshell/shell/tr$ sort num 17 2 2 3 3 6 8 9 -------------------------------
sort -n num inter12@inter12:~/myshell/shell/tr$ sort -n num 2 2 3 3 6 8 9 17 -------------------------------
sort -nr num inter12@inter12:~/myshell/shell/tr$ sort -nr num 17 9 8 6 3 3 2 2 -------------------------------
sort -u num 去除重复的 inter12@inter12:~/myshell/shell/tr$ sort -un num 2 3 6 8 9 17 ------------------------------- 新建一个文本: hnum 1k 4G 2k 9G 5M ------------------------------- sort -n hnum inter12@inter12:~/myshell/shell/tr$ sort -n hnum 1k 2k 4G 5M 9G 得不到我们需要的排序 ------------------------------- sort -h hnum inter12@inter12:~/myshell/shell/tr$ sort -h hnum 1k 2k 5M 4G 9G 这样就OK了
2.cut
cut 主要是三个参数比较常用 -d f c
-d:按照什么进行符号分割,默认时空格,所有的shell命令进行分割的默认都是空格。等同于 awk中的 -F
-f:分割后取得第几个区块,后面跟的时数字
-c:分割后取第几个字符,后面跟的也是字符
先生成一个测试文件
inter12@inter12:~/myshell/shell/cut$ ping www.sina.com.cn|tee ping
PING saaschannel.bops.test.com (127.61.10.10) 56(84) bytes of data.
64 bytes from comm-dns-ptr.test.com (127.61.10.10): icmp_req=1 ttl=55 time=1.00 ms
64 bytes from comm-dns-ptr.test.com (127.61.10.10): icmp_req=2 ttl=55 time=0.989 ms
64 bytes from comm-dns-ptr.test.com (127.61.10.10): icmp_req=3 ttl=55 time=1.02 ms
64 bytes from comm-dns-ptr.test.com (127.61.10.10): icmp_req=4 ttl=55 time=1.04 ms
这个时候会生成一个 ping 文件
cut -c1-2 ping :取第1到2个字符 inter12@inter12:~/myshell/shell/cut$ cut -c1-2 ping PI 64 64 64 64 ---------------------------------------------- cut -d ":" -f 2 ping inter12@inter12:~/myshell/shell/cut$ cut -d ":" -f 2 ping PING saaschannel.bops.alibaba.com (172.16.84.168) 56(84) bytes of data. icmp_req=1 ttl=55 time=1.00 ms icmp_req=2 ttl=55 time=0.989 ms icmp_req=3 ttl=55 time=1.02 ms icmp_req=4 ttl=55 time=1.04 ms 就是将冒号作为分隔符,取得第二个参数
shell下面很多命令是可以互通的,上面效果的不同实现
awk 版本:
awk -F ":" '{printf "%s\n",$2}' ping
sed 版本:
sed -e 's/^.*://g' ping