Linux sort、uniq、cut、wc命令详解

一、sort命令

sort 命令对指定的文件中的行排序,并将结果写到标准输出。如果指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。

1、sort命令语法:
sort [OPTION] FILE 

常用可选OPTION:

选项参数作用
-f忽略大小写的差异,例如 A 与 a 视为相同
-b忽略最前面的空格符部分
-M以月份的名字来排序,例如 JAN, DEC 等等的排序方法
-n使用『纯数字』进行排序(默认是以文字型态来排序的)
-r反向排序
-u就是 uniq ,相同的数据中,仅出现一行代表
-t指定分隔符,默认使用Tab分隔
-k以那个区间 (field) 来进行排序的意思
2、sort基本用法示例

对/ect/passwd中的账户排序

sort /etc/passwd

sort默认对字符串排序的,排序安字符串每个字符在字典中出现的先后升序排列,因此在结果中我们结果由字母 a 开始升序排序。

/etc/passwd的第三行都是数字,我想以第三行的数字对账户进行排序

#-t指定分隔符  -k指定排序的依据 -n表示以纯数字排序
sort -t":" -k 3 -n /etc/passwd

默认是升序排列,如果要降序排序,如下:

sort -t":" -k 3 -nr /etc/passwd

以/etc/passwd的第7个字段进行排序并去重,以统计出有多少种Shell

sort -t":" -k 7 -u /etc/passwd

二、uniq命令

uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用。也就是说,为了使uniq起作用,所有的重复行必须是相邻的。

1、uniq命令语法
uniq [OPTION]

常用可选OPTION:

选项参数作用
-i忽略大小写字符的不同
-c进行计数
-u仅显示出一次的行列
-d仅显示重复出现的行列
-w指定要比较的字符
2、uniq命令基本用法示例

uniq处理数据是按行处理的,只有一行都相同的时候才会合并,如果一行中只有一部分相同则会认为是不同的。

在根目录下有一个文件uniq.txt,对这个文件排序并去重

sort /uniq.txt | uniq

排序之后删除重复行,同时在行首位置输出该行重复的次

sort /uniq.txt | uniq -c

排序并去重后仅显示重复的行

uniq -dc < /uniq.txt

排序后仅仅显示没有重复的行

sort -u < /uniq.txt

三、cut命令

cut可以从一个文本或文本列中提取文本列

cut命令语法:

cut [OPTION] FILE

常用可选OPTION:

选项参数作用
-d后面接分隔字符。与 -f 一起使用
-f依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思
-c以字符 (characters) 的单位取出固定字符区间
-b以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志
-n取消分割多字节字符。仅和 -b 标志一起使用

-d和-f参数配合使用类似可以达到类似awk命令的功能,例如下面这个例子,将系统环境变量PATH取出获得其中的任意一个路径

 echo $PATH | cut -d ":" -f 5
 echo $PATH | cut -d ":" -f 1

将系统环境变量PATH取出获得其中第1~3个路径

echo $PATH | cut -d ":" -f 1-3

只显示/etc/passwd中的用户名和Shell类型

cat /etc/passwd | cut -d ":" -f 1,7

四、wc命令

利用wc指令我们可以计算文件的字节大小、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。

wc命令语法:

wc [OPTION]  [FILE/STDIN]

常用可选OPTION:

选项参数作用
-l只显示行数
-w只显示字数
-m只显示有多少字符
-c只显示Bytes数

wc命令的使用比较简单,默认使用wc不指定任何参数的时候会输出行数,单词数和字节数

wc </etc/passwd

打印出三个数字,从左到右依次表示输入所包含的行数、单词数和字节大小

当我们只想获得文件的某个方面的参数的时候可以指定对应的选项参数:

#显示文件或输入的行数
wc -l </etc/passwd
#显示文件或输入的字数
wc -w </etc/passwd
#显示文件或输入的字符个数
wc -m </etc/passwd
#显示文件或输入的byte字节数
wc -c </etc/passwd

留言区

还能输入500个字符