一个Linux命令sort帮你对文本排序

版权声明:guojawee https://blog.csdn.net/weixin_36750623/article/details/84228555

在Linux下,有时候需要对文本内容进行排序,例如按照字典顺序排序,按照数字排序或者按照特定列排序等等。今天我们就借助一个命令-sort来满足我们对文本排序的需求。

选项
默认情况下,按照以行构成的字符串为单位,按字典顺序升序排序
-n 按数值大小排列
-r 逆序排序
-u 去重
-k 指定列排序
-t 指定分隔符,未指定时,默认分隔符为空白
以多列为依据排序 sort -n -k 3 -k 2 test2.txt
按照特定列的特定字符排序 sort -t ’ ’ -k 2.2,2.3 test2.txt
-m 合并已经排好序的文本,但不会重新排序 sort -m file1 file2

待处理的文件

2 google 1998
10 icbc  1984
5 tencent 1998
1 apple 1976
16 samsung 1938

以多列为依据排序,假设按照公司创建年份排序,如果年份相同,则按照公司名称排序,即分别以第三列,第二列为依据排序:sort -n -k 3 -k 2 test.txt,输出结果如下:

16 samsung 1938
1 apple 1976
10 icbc  1984
2 google 1998
5 tencent 1998

如果要按照年份降序排序,则只需加-r参数即可:sort -n -k 3r -k 2 test.txt


按照特定列的特定字符排序,假如我们想要按照公司名称的第二至第三个字符排序,可以使用下面的方式:sort -t ’ ’ -k 2.2,2.3 test.txt,输出结果如下,-k 2.2,2.3指定了按照第二列排序,并且是第二列的第二个字符开始,到第三个字符结束

16 samsung 1938
10 icbc  1984
5 tencent 1998
2 google 1998
1 apple 1976

如果是以第二个字符开始,到最后一个字符结束,则用下面的命令即可:sort -t ’ ’ -k 2.2 test.txt

猜你喜欢

转载自blog.csdn.net/weixin_36750623/article/details/84228555