Linux Shell 014-文本行排序工具

Linux Shell 014-文本行排序工具

本节关键字:Linux、Bash Shell、文本排序
相关指令:sort、uniq

sort

sort介绍

sort工具用于排序;它将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

sort语法

基本语法:sort [选项] 文件名称

sort常用选项
选项 说明
-u 去除重复行
-r 降序排列,默认是升序
-o 将排序结果输出到文件中,类似重定向符号>
-n 以数字排序,默认是按字符排序
-t 分隔符
-k 第N列
-b 忽略前导空格。
-R 随机排序,每次运行的结果均不同
sort实例
# 按照用户的uid进行升序排列
$ sort -n -t: -k3 1.txt

# 按照用户的uid进行降序排列            
$ sort -nr -t: -k3 1.txt

# 按照数字排序
$ sort -n 2.txt

# 按照数字排序并且去重
$ sort -nu 2.txt
$ sort -nr 2.txt
$ sort -nru 2.txt
$ sort -nru 2.txt

# 按照数字排序并将结果重定向到文件
$ sort -n 2.txt -o 3.txt
$ sort -R 2.txt 
$ sort -u 2.txt 

uniq

uniq介绍

uniq用于去除连续的重复行。当重复的行并不相邻时,uniq 命令不起作用。

uniq语法

基本语法:uniq [选项] [输入文件] [输出文件]

uniq常用选项
选项 说明
-c 统计重复行次数
-d 仅显示重复出现的行列
-f<栏位> 忽略比较指定的栏位
-s<字符位置> 忽略比较指定的字符
-u 仅显示出一次的行列
-w<字符位置> 指定要比较的字符
-i 忽略大小写
–help 帮助
–version 显示版本信息

补充说明:

  • 不指定[输入文件],则从标准输入读取数据
  • 不指定[输出文件],则将内容显示到标准输出
uniq实例
# 去除文件2.txt中的重复行,并显示结果
$ uniq 2.txt 

# 检查文件2.txt并删除文件中重复出现的行,并在行首显示该行重复出现的次数
$ uniq -c 2.txt

# 当重复的行并不相邻时,uniq 命令是不起作用的,此时可以使用sort命令解决:
$ sort file | uniq

# 找出文件2.txt中重复的行
$ uniq -d 2.txt 

# 找出文件2.txt中重复的行,并统计在文件中出现的次数
$ uniq -dc 2.txt 

你可能感兴趣的:(Linux,Shell脚本,linux,运维,服务器,bash,centos)