linux sort排序

创建文件sortfile
ccc
aaa
bbb
zzz
eee
fff
ttt
ggg
aaa
bac
cac

1.按字母顺序排序
[limaoyuan@localhost files]# cat sortfile | sort
aaa
aaa
bac
bbb
cac
ccc
eee
fff
ggg
ttt
zzz

2.以第1段的第2个字母按字母的顺序排序
[limaoyuan@localhost files]# cat sortfile | sort -k1.2
aaa
aaa
bac
cac
bbb
ccc
eee
fff
ggg
ttt
zzz

----------------------------------------

再创建文件 sortfile2
a,b,c
b,c,a
c,d,f
z,a,b
e,d,b

1.sort命令默认是以空格做为每一段的分界符,同时我们可以加-t参数来改变分界符,
如上面的文件是用逗号分隔的,我们想以第2个段来进行排序,那么要用到-k
[limaoyuan@localhost files]# cat sortfile2 | sort -k2 -t","
z,a,b
a,b,c
b,c,a
e,d,b
c,d,f

格式也可以是下面这样,一个意思,-t的参数可以加引号也可以不加
[limaoyuan@localhost files]# sort -t, -k2 sortfile2
z,a,b
a,b,c
b,c,a
e,d,b
c,d,f

2.将排序结果输出到sortedfile文件中
[limaoyuan@localhost files]# cat sortfile2 | sort -t"," > sortedfile
打开sortedfile
[limaoyuan@localhost files]# cat sortedfile
a,b,c
a,d,b
b,c,a
c,d,f
z,a,b

3.去重复项的使用,对-u参数的巨大疑问
# sort -t, -k2 -u sortfile2 //想去掉第2段中的重复项,可结果是下面这样,明显没有去掉重复的d
z,a,b
a,b,c
b,c,a
e,d,b
c,d,f
但是,下面去掉第3个字段的重复项,显然是生效了,至今不太明白
# sort -t, -k3 -u sortfile2
b,c,a
z,a,b
a,b,c
c,d,f
但但是,下面3种可以完美
# cat sortfile2 | sort -u -k1,1 -t,
a,b,c
b,c,a
c,d,f
z,a,b
# cat sortfile2 | sort -u -k2,2 -t,
z,a,b
a,b,c
b,c,a
c,d,f
# cat sortfile2 | sort -u -k3,3 -t,
b,c,a
z,a,b
a,b,c
c,d,f
就上面一连串对-k的疑问,详细看了看资料,众同解释各不一样,总之-k如果只带一个参数
如-k2,那么匹配的范围是第2段一直到最后一段,而不只是针对第2段自己,如果加上-k2.2就是对-k2自己来匹配。不见得对,姑且先这么理解着吧。


另附, -r 倒序 -n以整数来比较排序 -f不分字母大小写 -b忽略开头空格
-u只保留相同键值的记录,只留中的第一条,只有键值字段是最重要的时候才会使用,通常用于去重
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值