博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell命令-文件及内容处理之sort、uniq
阅读量:5909 次
发布时间:2019-06-19

本文共 2647 字,大约阅读时间需要 8 分钟。

文件及内容处理 - sort、unip

1. sort:对文件的文本内容排序

sort命令的功能说明

sort 命令用于将文本文件内容加以排序。sort 可针对文本文件的内容,以行为单位来排序。

sort命令的语法格式

sort [OPTION]... [FILE]...

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

sort命令的常用参数说明:

split 参数很多,表1为 sort 命令的参数及说明:

表1: sort 命令的参数及说明

参数选项 解释说明
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o <输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t <分隔字符> 指定排序时所用的栏位分隔字符。
+ <起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
--help 显示帮助。
--version 显示版本信息。

sort命令的实践操作

范例1: 在使用 sort 命令以默认的式对文件的行进行排序,使用的命令如下:

--------------------------------------------------------------==>testfile文件原有排序 <==--------------------------------------------------------------[root@web01 ~]# cat testfile       test 30  Hello 95  Linux 85

==>重排结果<==

[root@web01 ~]# sort testfile

Hello 95
Linux 85
test 30

## 2. uniq:去除重复行>**uniq命令的功能说明**>> `uniq` 命令用于检查及删除文本文件中重复出现的行列,一般与 `sort` 命令结合使用。`uniq` 可检查文本文件中重复出现的行列。>**uniq命令的语法格式**>>`uniq` [OPTION]... [INPUT [OUTPUT]]>>`uniq` [-cdu][-f
<栏位>
][-s
<字符位置>
][-w
<字符位置>
][--help][--version][输入文件][输出文件]>**uniq命令的常用参数说明:**>>`uniq` 参数不多,表1为 `uniq` 命令的参数及说明:>**表1:** `uniq` 命令的参数及说明参数选项|解释说明:--|:---c或--count |在每列旁边显示该行重复出现的次数。-d或--repeated |仅显示重复出现的行列。-f
<栏位>
或--skip-fields=
<栏位>
|忽略比较指定的栏位。-s
<字符位置>
或--skip-chars=
<字符位置>
| 忽略比较指定的字符。-u或--unique |仅显示出一次的行列。-w
<字符位置>
或--check-chars=
<字符位置>
| 指定要比较的字符。--help | 显示帮助。--version | 显示版本信息。[输入文件] |指定已排序好的文本文件。如果不指定此项,则从标准读取数据;[输出文件] | 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。>**uniq命令的实践操作**>**范例1:** 文件testfile中第 2、3、5、6、7、9行为相同的行,使用 `uniq` 命令删除重复的行,可使用以下命令:

==>原有内容 <==

[root@web01 ~]# cat testfile

test 30
test 30
test 30
Hello 95
Hello 95
Hello 95
Hello 95
Linux 85
Linux 85


==>删除重复行后的内容<==

[root@web01 ~]# uniq testfile

test 30
Hello 95
Linux 85

>**范例2:**  检查文件并删除文件中重复出现的行,并在行首显示该行重复出现的次数。使用如下命令:

[root@web01 ~]# uniq -c testfile <-->删除重复行后的内容

3 test 30 <-->前面的数字的意义为该行共出现了3次
4 Hello 95 <-->前面的数字的意义为该行共出现了4次
2 Linux 85 <-->前面的数字的意义为该行共出现了2次

>**范例3:**  当重复的行并不相邻时,`uniq` 命令是不起作用的,即若文件内容为以下时,`uniq` 命令不起作用:

==>原有内容 <==

[root@web01 ~]# cat testfile1

test 30
Hello 95
Linux 85
test 30
Hello 95
Linux 85
test 30
Hello 95
Linux 85


==>这时我们就可以使用 sort<==

[root@web01 ~]# sort testfile1 | uniq

Hello 95
Linux 85
test 30


==>统计各行在文件中出现的次数:<==

[root@web01 ~]# sort testfile1 | uniq -c

3 Hello 95
3 Linux 85
3 test 30


==>在文件中找出重复的行:<==

[root@web01 ~]# sort testfile1 | uniq -d

Hello 95
Linux 85
test 30

>**今天就写到这里,有什么疑问或出现什么错误,随时欢迎大神们发表评论指点迷津**

转载于:https://blog.51cto.com/14068656/2384899

你可能感兴趣的文章
四则运算
查看>>
Qt5 for Android: incompatible ABI
查看>>
zookeeper学习
查看>>
class类名的管理
查看>>
LeetCode:Rectangle Area
查看>>
文本查询
查看>>
查看帐号授权信息
查看>>
小程序(四):模板
查看>>
【转】Java - printf
查看>>
jquery获取元素到屏幕底的可视距离
查看>>
ENDNOTE使用方法(转发)
查看>>
计算机数制和运算的一点总结.
查看>>
UML系列 (五) 为什么要用UML建模之建模的重要性
查看>>
Get Docker CE for CentOS
查看>>
修改用户进程可打开文件数限制(转)
查看>>
框架是什么,框架有什么用(转)
查看>>
集成测试
查看>>
2013长沙 G Graph Reconstruction (Havel-Hakimi定理)
查看>>
[android] 手机卫士黑名单功能(列表展示)
查看>>
c3p0连接池配置
查看>>