利用Linux命令行进行文本按行去重并按重复次数排序
http://www.2cto.com/os/201309/244056.html
利用Linux命令行进行文本按行去重并按重复次数排序
linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能。本文这里举例说明如何利用Linux命令行进行文本按行去重并按重复次数排序。主要用到的命令有sort,uniq和cut。其中,sort主要功能是排序,uniq主要功能是实现相邻文本行的去重,cut可以从文本行中提取相应的文本列(简单地说,就是按列操作文本行)。
用于演示的测试文件内容如下:
[plain]
Hello World.
Apple and Nokia.
Hello World.
I wanna buy an Apple device.
The Iphone of Apple company.
Hello World.
The Iphone of Apple company.
My name is Friendfish.
Hello World.
Apple and Nokia.
实现命令及过程如下:
[plain]
1、文本行去重
(1)排序
由于uniq命令只能对相邻行进行去重复操作,所以在进行去重前,先要对文本行进行排序,使重复行集中到一起。
$ sort test.txt
Apple and Nokia.
Apple and Nokia.
Hello World.
Hello World.
Hello World.
Hello World.
I wanna buy an Apple device.
My name is Friendfish.
The Iphone of Apple company.
The Iphone of Apple company.
(2)去掉相邻的重复行
$ sort test.txt | uniq
Apple and Nokia.
Hello World.
I wanna buy an Apple device.
My name is Friendfish.
The Iphone of Apple company.
2、文本行去重并按重复次数排序
(1)首先,对文本行进行去重并统计重复次数(uniq命令加-c选项可以实现对重复次数进行统计。)。
$ sort test.txt | uniq -c
2 Apple and Nokia.
4 Hello World.
1 I wanna buy an Apple device.
1 My name is Friendfish.
2 The Iphone of Apple company.
(2)对文本行按重复次数进行排序。
sort -n可以识别每行开头的数字,并按其大小对文本行进行排序。默认是按升序排列,如果想要按降序要加-r选项(sort -rn)。
$ sort test.txt | uniq -c | sort -rn
4 Hello World.
2 The Iphone of Apple company.
2 Apple and Nokia.
1 My name is Friendfish.
1 I wanna buy an Apple device.
(3)每行前面的删除重复次数。
cut命令可以按列操作文本行。可以看出前面的重复次数占8个字符,因此,可以用命令cut -c 9- 取出每行第9个及其以后的字符。
$ sort test.txt | uniq -c | sort -rn | cut -c 9-
Hello World.
The Iphone of Apple company.
Apple and Nokia.
My name is Friendfish.
I wanna buy an Apple device.
下面附带说一下cut命令的使用,用法如下:
[plain]
cut -b list [-n] [file ...]
cut -c list [file ...]
cut -f list [-d delim][-s][file ...]
上面的-b、-c、-f分别表示字节、字符、字段(即byte、character、field);
list表示-b、-c、-f操作范围,-n常常表示具体数字;
file表示的自然是要操作的文本文件的名称;
delim(英文全写:delimiter)表示分隔符,默认情况下为TAB;
-s表示不包括那些不含分隔符的行(这样有利于去掉注释和标题)
三种方式中,表示从指定的范围中提取字节(-b)、或字符(-c)、或字段(-f)。
范围的表示方法:
n 只有第n项
n- 从第n项一直到行尾
n-m 从第n项到第m项(包括m)
-m 从一行的开始到第m项(包括m)
- 从一行的开始到结束的所有项
在写这篇文章的时候,用到了vim的大小写转化的快捷键:gu变小写,gU变大写。结合ctrl+v能够将一片文字中的字符进行大小写转换,非常好用。
+
+
+
=
=
=
相关推荐
当然,这只是Linux命令行工具中的一小部分,实际操作中,还可以结合`grep`、`awk`、`sed`等命令进行更复杂的文本处理。通过不断的实践和学习,你可以更好地利用Linux的强大功能来解决实际问题。
Linux Shell脚本编程是Linux系统管理中不可或缺的一部分,它允许用户通过编写命令脚本来自动化重复性的任务,提高工作效率。在Linux环境中,虽然图形界面工具众多,但Shell由于其灵活性和强大的功能,始终扮演着核心...
在Linux操作系统中,Shell是一个强大的命令行接口,它提供了丰富的文本处理工具,使得用户可以高效地管理和操作文件及文本数据。本文将深入讲解一些最常用的Shell工具,包括find、grep、xargs、sort、uniq、tr、cut...
`sort`、`join`、`cut`、`paste`、`split`和`uniq`是Linux命令行中的一组强大工具,它们专门用于对文本文件进行排序、合并、切割、拼接、分割和去重等操作。下面将详细讲解这些工具的使用方法和应用场景。 1. `sort...
`sort`的主要功能是对文本文件的行进行排序。它支持多种选项来自定义排序方式。例如: - `-b` 忽略每行开头的空格。 - `-c` 检查文件是否已排序。 - `-d` 对字母、数字和空格之外的字符进行忽略。 - `-f` 不区分大小...
在Linux命令行界面,我们最常使用的可能是`ls`,用于列出目录内容;`cd`,用于切换当前工作目录;`mkdir`和`rmdir`,分别用于创建和删除目录;`touch`,用于创建新文件;`rm`,用于删除文件或目录,但需谨慎使用,...
- **去重**:去除重复的网页或内容。 - **排名**:根据各种算法(如PageRank)对结果进行排序,以提供最相关的搜索结果。 **2. TSE在Linux上的实现** 在Linux环境下,TSE可能利用了该系统强大的文件处理能力和...
`uniq`命令在Unix/Linux中是一个非常常见的文本处理工具,它用于过滤出连续重复的行,通常与`sort`命令结合使用,因为`uniq`只对连续的重复行进行处理。在Windows环境下,如果没有内置的`uniq`命令,可以寻找替代品...
"cut"命令可以从每行文本中截取指定的字段,"fmt"用于格式化文本,而"sed"是一个流编辑器,用于对输入的文本进行处理,并将结果输出到标准输出。 用户和组管理相关命令用于创建、修改和删除用户账户以及分配权限。...
例如:`sort file.txt`对文件`file.txt`中的行进行排序。 12. **uniq**: 删除重复的相邻行。例如:`sort file.txt | uniq`先排序后去重。 13. **expr**: 执行算术运算。例如:`expr 2 "+" 3`计算2加3的结果。 14. **...
总之,这份文档全面地介绍了Linux命令行操作的基本知识,以及虚拟机VMware的使用技巧,对于初学者来说是一份非常有价值的参考资料。通过深入学习和实践,你将能够熟练掌握Linux系统管理和日常操作,提升在IT领域的...
41. **uniq**:去除文件中连续的重复行,用于数据去重。 42. **join**:合并两个有序文件的相同行,进行数据合并操作。 43. **awk**:强大的文本处理工具,用于处理结构化数据。 44. **sed**:流编辑器,可实现对...
3. `sort`和`uniq`命令:排序和去重,帮助统计日志中的唯一项。 4. `sed`命令:流编辑器,可对日志进行替换、删除等操作。 五、日志安全 1. 权限控制:确保只有授权用户能读取或写入日志文件,如`chmod 644 $LOG_...
10. **cut, paste, sort, uniq, wc**: 这些是Unix/Linux中的一系列文本处理工具,用于切割、拼接、排序、去重和计算文本文件的统计信息。 安装和使用UnixToolBox后,用户可以在Windows的命令提示符中直接调用这些...
- 第16-21行按字母顺序排序用户名,并去重输出。 #### 三、文件重定向 Perl支持通过`open`函数实现文件重定向,类似于UNIX shell命令行中的重定向功能。例如: ```perl open(WOUT, "|mail dave"); ``` 这行代码...
- `sort`, `uniq`用于对文件内容进行排序和去重。 - `cut`截取文件中的特定字段。 5. **常用操作命令**: - `grep`搜索文件中的特定文本。 - `find`按条件查找文件。 - `locate`基于数据库快速查找文件,`...
35. **uniq** - 去重:去除连续重复行。 36. **wc** - 统计字符、单词和行数:用于分析文件的统计信息。 37. **which** - 查找命令的路径:确定哪个版本的命令正在被使用。 38. **whoami** - 显示当前用户名:...
- **sort/wc/uniq**:排序、计数和去重。 - **tee**:将标准输出同时输出到屏幕和文件。 - **tr/expand/col**:字符转换工具。 - **split**:分割文件。 - **xargs**:处理命令行参数。 #### 十六、数据流重定向 ...
这条命令先对文件内容进行排序,然后使用 `sed` 命令去除重复行,并将结果保存到新文件中。 ### 总结 以上介绍了一些常用的 Linux 脚本命令及其应用实例。通过灵活运用这些命令,可以大大提高日常开发和运维工作的...
sort**: 对当前位置向下的5行进行排序。 - **:s/pattern/replacement/g**: 替换模式中的所有匹配项。 - **:1,$s/Emacs/Vim/g**: 在文档的第1行到最后一行之间替换所有的“Emacs”为“Vim”。 5. **插件管理和配置...