shell脚本 之 sort cut

先看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

作者: inter12

在这苦短的人生中,追求点自己的简单快乐

发表评论

电子邮件地址不会被公开。 必填项已用*标注