`
fantaxy025025
  • 浏览: 1328395 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

利用Linux命令行进行文本按行去重并按重复次数排序

 
阅读更多

利用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实现文件内容去重及求交并差集

    当然,这只是Linux命令行工具中的一小部分,实际操作中,还可以结合`grep`、`awk`、`sed`等命令进行更复杂的文本处理。通过不断的实践和学习,你可以更好地利用Linux的强大功能来解决实际问题。

    linux_Shell(脚本)编程入门_实例讲解详解.pdf

    Linux Shell脚本编程是Linux系统管理中不可或缺的一部分,它允许用户通过编写命令脚本来自动化重复性的任务,提高工作效率。在Linux环境中,虽然图形界面工具众多,但Shell由于其灵活性和强大的功能,始终扮演着核心...

    史上最全的 Linux Shell 文本处理工具集锦.doc

    在Linux操作系统中,Shell是一个强大的命令行接口,它提供了丰富的文本处理工具,使得用户可以高效地管理和操作文件及文本数据。本文将深入讲解一些最常用的Shell工具,包括find、grep、xargs、sort、uniq、tr、cut...

    linux sort join cut paste split uniq

    `sort`、`join`、`cut`、`paste`、`split`和`uniq`是Linux命令行中的一组强大工具,它们专门用于对文本文件进行排序、合并、切割、拼接、分割和去重等操作。下面将详细讲解这些工具的使用方法和应用场景。 1. `sort...

    Linux命令 sort、uniq、tr工具详解

    `sort`的主要功能是对文本文件的行进行排序。它支持多种选项来自定义排序方式。例如: - `-b` 忽略每行开头的空格。 - `-c` 检查文件是否已排序。 - `-d` 对字母、数字和空格之外的字符进行忽略。 - `-f` 不区分大小...

    linux tools

    在Linux命令行界面,我们最常使用的可能是`ls`,用于列出目录内容;`cd`,用于切换当前工作目录;`mkdir`和`rmdir`,分别用于创建和删除目录;`touch`,用于创建新文件;`rm`,用于删除文件或目录,但需谨慎使用,...

    linux平台tse搜索引擎

    - **去重**:去除重复的网页或内容。 - **排名**:根据各种算法(如PageRank)对结果进行排序,以提供最相关的搜索结果。 **2. TSE在Linux上的实现** 在Linux环境下,TSE可能利用了该系统强大的文件处理能力和...

    windows下的uniq

    `uniq`命令在Unix/Linux中是一个非常常见的文本处理工具,它用于过滤出连续重复的行,通常与`sort`命令结合使用,因为`uniq`只对连续的重复行进行处理。在Windows环境下,如果没有内置的`uniq`命令,可以寻找替代品...

    linux-常用命令学习笔记.pdf

    "cut"命令可以从每行文本中截取指定的字段,"fmt"用于格式化文本,而"sed"是一个流编辑器,用于对输入的文本进行处理,并将结果输出到标准输出。 用户和组管理相关命令用于创建、修改和删除用户账户以及分配权限。...

    Linux环境下shell编程

    例如:`sort file.txt`对文件`file.txt`中的行进行排序。 12. **uniq**: 删除重复的相邻行。例如:`sort file.txt | uniq`先排序后去重。 13. **expr**: 执行算术运算。例如:`expr 2 "+" 3`计算2加3的结果。 14. **...

    Linux命令学习文档

    总之,这份文档全面地介绍了Linux命令行操作的基本知识,以及虚拟机VMware的使用技巧,对于初学者来说是一份非常有价值的参考资料。通过深入学习和实践,你将能够熟练掌握Linux系统管理和日常操作,提升在IT领域的...

    常用的60个Linux常用命令.zip

    41. **uniq**:去除文件中连续的重复行,用于数据去重。 42. **join**:合并两个有序文件的相同行,进行数据合并操作。 43. **awk**:强大的文本处理工具,用于处理结构化数据。 44. **sed**:流编辑器,可实现对...

    linux 下web服务器每天生成日志的shell脚本

    3. `sort`和`uniq`命令:排序和去重,帮助统计日志中的唯一项。 4. `sed`命令:流编辑器,可对日志进行替换、删除等操作。 五、日志安全 1. 权限控制:确保只有授权用户能读取或写入日志文件,如`chmod 644 $LOG_...

    UnixToolBox.zip

    10. **cut, paste, sort, uniq, wc**: 这些是Unix/Linux中的一系列文本处理工具,用于切割、拼接、排序、去重和计算文本文件的统计信息。 安装和使用UnixToolBox后,用户可以在Windows的命令提示符中直接调用这些...

    linux perl 脚本介绍.docx

    - 第16-21行按字母顺序排序用户名,并去重输出。 #### 三、文件重定向 Perl支持通过`open`函数实现文件重定向,类似于UNIX shell命令行中的重定向功能。例如: ```perl open(WOUT, "|mail dave"); ``` 这行代码...

    linux操作系统实验报告要点.pdf

    - `sort`, `uniq`用于对文件内容进行排序和去重。 - `cut`截取文件中的特定字段。 5. **常用操作命令**: - `grep`搜索文件中的特定文本。 - `find`按条件查找文件。 - `locate`基于数据库快速查找文件,`...

    50条最常用Linux系统命令大全手册

    35. **uniq** - 去重:去除连续重复行。 36. **wc** - 统计字符、单词和行数:用于分析文件的统计信息。 37. **which** - 查找命令的路径:确定哪个版本的命令正在被使用。 38. **whoami** - 显示当前用户名:...

    一步一步学 Linux

    - **sort/wc/uniq**:排序、计数和去重。 - **tee**:将标准输出同时输出到屏幕和文件。 - **tr/expand/col**:字符转换工具。 - **split**:分割文件。 - **xargs**:处理命令行参数。 #### 十六、数据流重定向 ...

    linux常用脚本说明

    这条命令先对文件内容进行排序,然后使用 `sed` 命令去除重复行,并将结果保存到新文件中。 ### 总结 以上介绍了一些常用的 Linux 脚本命令及其应用实例。通过灵活运用这些命令,可以大大提高日常开发和运维工作的...

    最新最全的linux vim命令大全

    sort**: 对当前位置向下的5行进行排序。 - **:s/pattern/replacement/g**: 替换模式中的所有匹配项。 - **:1,$s/Emacs/Vim/g**: 在文档的第1行到最后一行之间替换所有的“Emacs”为“Vim”。 5. **插件管理和配置...

Global site tag (gtag.js) - Google Analytics