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  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值