文件及内容处理 - 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 | < 输出文件 & gt; 将排序后的结果存入指定的文件。 |
-r | 以相反的顺序来排序。 |
-t | < 分隔字符 & gt; 指定排序时所用的栏位分隔字符。 |
+ | < 起始栏位 & gt;-< 结束栏位 & gt; 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。 |
--help | 显示帮助。 |
--version | 显示版本信息。 |
sort 命令的实践操作
范例 1: 在使用 sort 命令以默认的式对文件的行进行排序, 使用的命令如下:
--------------------------------------------------------------
==>testfile 文件原有排序 <==
- --------------------------------------------------------------
- [[email protected] ~]# cat testfile
- test 30
- Hello 95
- Linux 85
==> 重排结果 <==
- [[email protected] ~]# 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` 命令删除重复的行, 可使用以下命令:
==> 原有内容 <==
- [[email protected] ~]# cat testfile
- test 30
- test 30
- test 30
- Hello 95
- Hello 95
- Hello 95
- Hello 95
- Linux 85
- Linux 85
==> 删除重复行后的内容 <==
- [[email protected] ~]# uniq testfile
- test 30
- Hello 95
- Linux 85
>** 范例 2:** 检查文件并删除文件中重复出现的行, 并在行首显示该行重复出现的次数. 使用如下命令:
[[email protected] ~]# uniq -c testfile <--> 删除重复行后的内容
3 test 30 <--> 前面的数字的意义为该行共出现了 3 次
4 Hello 95 <--> 前面的数字的意义为该行共出现了 4 次
2 Linux 85 <--> 前面的数字的意义为该行共出现了 2 次
>** 范例 3:** 当重复的行并不相邻时,`uniq` 命令是不起作用的, 即若文件内容为以下时,`uniq` 命令不起作用:
==> 原有内容 <==
- [[email protected] ~]# cat testfile1
- test 30
- Hello 95
- Linux 85
- test 30
- Hello 95
- Linux 85
- test 30
- Hello 95
- Linux 85
==> 这时我们就可以使用 sort<==
- [[email protected] ~]# sort testfile1 | uniq
- Hello 95
- Linux 85
- test 30
==> 统计各行在文件中出现的次数:<==
- [[email protected] ~]# sort testfile1 | uniq -c
- 3 Hello 95
- 3 Linux 85
- 3 test 30
==> 在文件中找出重复的行:<==
- [[email protected] ~]# sort testfile1 | uniq -d
- Hello 95
- Linux 85
- test 30
>** 今天就写到这里, 有什么疑问或出现什么错误, 随时欢迎大神们发表评论指点迷津 **
来源: http://www.bubuko.com/infodetail-3036328.html