【Linux】sort排序、uniq去重、wc统计

一、sort 排序

  • sort命令用于 对文本文件内容,以行为单位来排序。
  • sort命令以空格作为字段分隔符,将一行分割为多个关键字对文件进行排序。
  • 需要注意的是除非你将输出重定向到文件中,否则sort命令并不对文件内容进行实际的排序(即文件内容没有修改),只是将文件内容按有序输出。

1、语法

sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]

2、参数说明

参数说明
-m将几个排序好的文件进行合并。
-u内容去重
-n依照数值的大小排序,升序排列。
-o<输出文件>将排序后的结果存入指定的文件。
-r以相反的顺序来排序。
-t<分隔字符>指定排序时所用的栏位分隔字符。
-k<指定排序的列数>指定要排序的列数,默认是从第一列开始比较,-k可指定某一列,也可与-t 结合使用时,代表某一栏
+<起始栏位>-<结束栏位>以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

3、实例

(1)对文件进行升序排序

sort testfile 
以行为单位,相互比较,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
注意:原文件内容并未被修改!

在这里插入图片描述
(2)对文件进行升序排序,并去除重复行 sort -u

sort -u 1.txt

在这里插入图片描述
可以看出:

  • sort -u是先对内容进行排序,然后再去重(实际也是去除了相邻的重复行)。

  • 而uniq不能实现排序,只能去除相邻的重复行,所以要跟sort合并使用,先用sort排序,再用uniq去重

      sort 1.txt | uniq:
    

在这里插入图片描述
(3)按数值大小降序排列后,把结果再输出到原文件中 -o(直接用重定向做不到)

sort -nr num.txt -o num.txt

(4)使用sort的-t选项和-k选项,设置间隔符后再指定排序的列
在这里插入图片描述
如上图所示,对年月日的日期进行排序,直接使用sort dat.txt时,会按列从左到右来排序;

sort -t'-' -k2 dat.txt
# 其中-t'-' 是以 ‘-’ 为分隔符对每行内容分栏,然后-k 2 表示对分栏后的第二栏内容进行默认的升序排列。

(5)使用sort -k指定以某一列排序

sort -k9 a.txt
(基于a.txt的第九列来排序)

(6)sort命令并非仅能对文件进行排序,我们还可以通过管道将命令的输出内容重定向到sort命令中

ls -l /home/$USER | sort -nk5

(7)对/etc/passwd以‘:’分隔,再以第六个域的第2个字符到第4个字符进行正向排序,再基于第一个域进行反向排序。

cat /etc/passwd |  sort -t':' -k 6.2,6.4 -k 1r      
sync:x:4:65534:sync:/bin:/bin/sync
proxy:x:13:13:proxy:/bin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh

二、uniq 去重

1、uniq使用

  • uniq命令用于去重文件内容中的连续重复行,通常要跟sort一起使用,先利用sort排序,然后用uniq去重。
  • uniq命令与sort命令类似,并不对文件内容进行实际的排序(即文件内容没有修改),只是在输出内容中去重。
  • uniq -c :显示每一行重复的次数

2、sort和uniq去重结果对比

1、sort -u使用sort对文件去重

sort -u 1.txt

在这里插入图片描述
可以看出,sort -u是先对内容进行排序,然后再去重(实际也是去除了相邻的重复行)。

2、使用uniq对文件去重
在这里插入图片描述
可以看出,当内容中的重复行不相邻时,直接使用uniq 1.txt 并不能达到去重。

因为uniq只能去除相邻的重复行,所以要跟sort合并使用,先用sort排序,再用uniq去重sort 1.txt | uniq

三、wc 统计

wc命令用于统计文件里面有多少行,多少单词,多少字符。

常与sort、grep等其它命令结合使用。

参数说明
-lline,统计行数;
-wword,统计单词数(英文单词),以空格或换行为单位;
-m统计字符数;
wc 1.txt
默认显示所有的行数、单词数、字符数。

如下图所示:
在这里插入图片描述

  • 9
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: sort命令用于对文件进行排序,可以按照字母、数字等方式排序uniq命令用于去除文件中的重复行,可以用于统计文件中不同行的数量。 wc命令用于统计文件中的行数、单词数和字符数等信息,可以用于分析文件的内容。 ### 回答2: Linux sort命令是用来对文本文件进行排序的命令。它可以按照不同的排序规则,包括字母顺序、数字顺序、日期顺序等对文件进行排序sort命令默认按照字母顺序进行排序,但可以使用参数来改变排序规则。sort命令可以从命令行或者文件中读取输入,然后将排序结果输出到标准输出或者文件中。 Linux uniq命令用于去除文件中的重复行。uniq命令默认情况下只能去除相邻的重复行,如果想要去除非相邻的重复行,需要先使用sort命令将文件进行排序,然后再使用uniq命令。uniq命令可以从命令行或者文件中读取输入,并将去除重复行的结果输出到标准输出或者文件中。 Linux wc命令用于统计文件中的行数、字数和字符数。wc命令可以从命令行或者文件中读取输入,并将统计结果输出到标准输出或者文件中。wc命令默认情况下会输出一个包括行数、字数和字符数的行。可以使用参数来改变输出格式,如只输出行数、只输出字数、只输出字符数等。wc命令在处理大文件时非常高效。 以上是对Linux sortuniqwc命令的简要介绍。这些命令在Linux系统中非常有用,可以帮助我们对文件进行排序、去除重复行和统计信息。它们具有丰富的参数选项,可以根据不同的需求进行灵活的使用。 ### 回答3: Linux中的sort命令是用来排序文本文件内容的命令,它能够按照字母顺序对每一行进行排序sort命令的一般语法为:sort [选项] [文件名]。 -sort命令的一些常用选项有: -n,按照数值进行排序; -r,按照逆序进行排序; -u,去除重复的行; -k n,按照指定的列进行排序,n为列号; -o,将排序结果输出到指定的文件。 uniq命令用于去除文本文件中相邻的重复行。它能够检测和去除由sort命令排序之后的重复行。uniq命令的一般语法为:uniq [选项] [文件名]。 -uniq命令的一些常用选项有: -c,显示每行出现的次数; -d,仅显示重复的行; -u,仅显示没有重复的行; -i,忽略大小写。 wc命令用于统计文件中的行数、字数和字节数。wc命令的一般语法为:wc [选项] [文件名]。 -wc命令的一些常用选项有: -l,仅统计行数; -w,仅统计字数; -c,仅统计字节数; -m,统计字符数,包括空格。 这三个命令在Linux中广泛应用于文本文件的处理和统计工作。通过组合使用这些命令,我们可以实现对文本文件的排序去重统计工作,提高工作效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值