最近杂事太多,正事进展缓慢。Fighting!

linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能。本文这里举例说明如何利用Linux命令行进行文本按行去重并按重复次数排序。主要用到的命令有sort,uniq和cut。其中,sort主要功能是排序,uniq主要功能是实现相邻文本行的去重,cut可以从文本行中提取相应的文本列(简单地说,就是按列操作文本行)。

用于演示的测试文件内容如下:

  1. Hello World.
  2. Apple and Nokia.
  3. Hello World.
  4. I wanna buy an Apple device.
  5. The Iphone of Apple company.
  6. Hello World.
  7. The Iphone of Apple company.
  8. My name is Friendfish.
  9. Hello World.
  10. Apple and Nokia.

实现命令及过程如下:

  1. 1、文本行去重
  2. (1)排序
  3. 由于uniq命令只能对相邻行进行去重复操作,所以在进行去重前,先要对文本行进行排序,使重复行集中到一起。
  4. $ sort test.txt
  5. Apple and Nokia.
  6. Apple and Nokia.
  7. Hello World.
  8. Hello World.
  9. Hello World.
  10. Hello World.
  11. I wanna buy an Apple device.
  12. My name is Friendfish.
  13. The Iphone of Apple company.
  14. The Iphone of Apple company.
  15. (2)去掉相邻的重复行
  16. $ sort test.txt | uniq
  17. Apple and Nokia.
  18. Hello World.
  19. I wanna buy an Apple device.
  20. My name is Friendfish.
  21. The Iphone of Apple company.
  22.  
  23. 2、文本行去重并按重复次数排序
  24. (1)首先,对文本行进行去重并统计重复次数(uniq命令加-c选项可以实现对重复次数进行统计。)。
  25. $ sort test.txt | uniq -c
  26. 2 Apple and Nokia.
  27. 4 Hello World.
  28. 1 I wanna buy an Apple device.
  29. 1 My name is Friendfish.
  30. 2 The Iphone of Apple company.
  31. (2)对文本行按重复次数进行排序。
  32. sort -n可以识别每行开头的数字,并按其大小对文本行进行排序。默认是按升序排列,如果想要按降序要加-r选项(sort -rn)。
  33. $ sort test.txt | uniq -c | sort -rn
  34. 4 Hello World.
  35. 2 The Iphone of Apple company.
  36. 2 Apple and Nokia.
  37. 1 My name is Friendfish.
  38. 1 I wanna buy an Apple device.
  39. (3)每行前面的删除重复次数。
  40. cut命令可以按列操作文本行。可以看出前面的重复次数占8个字符,因此,可以用命令cut -c 9- 取出每行第9个及其以后的字符。
  41. $ sort test.txt | uniq -c | sort -rn | cut -c 9-
  42. Hello World.
  43. The Iphone of Apple company.
  44. Apple and Nokia.
  45. My name is Friendfish.
  46. I wanna buy an Apple device.

下面附带说一下cut命令的使用,用法如下:

  1. cut -b list [-n] [file ...]
  2. cut -c list [file ...]
  3. cut -f list [-d delim][-s][file ...]
  4.  
  5. 上面的-b、-c、-f分别表示字节、字符、字段(即bytecharacterfield);
  6. list表示-b、-c、-f操作范围,-n常常表示具体数字;
  7. file表示的自然是要操作的文本文件的名称;
  8. delim(英文全写:delimiter)表示分隔符,默认情况下为TAB
  9. -s表示不包括那些不含分隔符的行(这样有利于去掉注释和标题)
  10. 三种方式中,表示从指定的范围中提取字节(-b)、或字符(-c)、或字段(-f)。
  11.  
  12. 范围的表示方法:
  13. n 只有第n
  14. n- 从第n项一直到行尾
  15. n-m 从第n项到第m项(包括m)
  16. -m 从一行的开始到第m项(包括m)
  17. - 从一行的开始到结束的所有项

在写这篇文章的时候,用到了vim的大小写转化的快捷键:gu变小写,gU变大写。结合ctrl+v能够将一片文字中的字符进行大小写转换,非常好用。

最后附加一个小段子:

用django的时候,启动web服务器,出现如下错误:

  1. Django version 1.5.4, using settings 'mysite.settings'
  2. Development server is running at http://127.0.0.1:8000/
  3. Quit the server with CONTROL-C.
  4. Error: That port is already in use.

解决方法有两个:

(1) 加端口参数

python manage.py runserver 8080
(2) 终止占用端口的进程
sudo netstat -tulpn | grep :8000
kill -9 <进程pid>

利用Linux命令行进行文本按行去重并按重复次数排序的更多相关文章

  1. linux命令截取文件最后n行(所有命令)

    linux命令截取文件最后n行(所有命令) tail -n a.txt > b.txt 联想:系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) una ...

  2. Linux 命令 - wc: 统计文件的行数、字数和字节数

    命令格式 wc [OPTION]... [FILE]... 命令格式 -c, --bytes 打印字节数. -m, --chars 打印字符数. -l, --lines 打印行数. -L, --max ...

  3. 转载:Linux命令经典面试题:统计文件中出现次数最多的前10个单词

    1.使用linux命令或者shell实现:文件words存放英文单词,格式为每行一个英文单词(单词可以重复),统计这个文件中出现次数最多的前10个单词 主要考察对sort.uniq命令的使用,相关解释 ...

  4. 转:linux命令: tail ,head 显示文件某行内容 与sed在线编辑器

    linux 如何显示一个文件的某几行(中间几行) 转:http://www.cnblogs.com/xianghang123/archive/2011/08/03/2125977.html http: ...

  5. linux命令读取文件中特定行

    1.如果你只想看文件的前5行,可以使用head命令, 如: head -5 /etc/passwd 2.如果你想查看文件的后10行,可以使用tail命令, 如: tail -10 /etc/passw ...

  6. Linux命令去重统计排序

    利用Linux命令进行文本按行去重并按重复次数排序   linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能.本文这里举例说明如何利用Linux命令行进行文本按行去 ...

  7. Linux服务器管理员必备Linux命令TOP5

    Linux桌面环境的界面友好度.图形性能及附件工具已经大幅进化,然而Linux服务器却还没有能达到这一步. 作为系统管理员必须熟练掌握Linux命令.Linux命令的内容很多,其中的一些TOP命令对于 ...

  8. 让你的 Linux 命令骚起来

    目录 管道符号 " | " grep sed awk sort comm uniq tr cat head tail wc find tsort tee 「>」重定向符号 「 ...

  9. Linux awk+uniq+sort 统计文件中某字符串出现次数并排序

    https://blog.csdn.net/qq_28766327/article/details/78069989 在服务器开发中,我们经常会写入大量的日志文件.有时候我们需要对这些日志文件进行统计 ...

随机推荐

  1. Labview中引用,属性节点,局部变量之间的区别

    Labview中引用,属性节点,局部变量之间的区别        在Labview中我们经常会碰到这样几个概念,那就是控件的引用,属性节点以及局部变量,他们之间到底有哪些区别呢?        首先谈 ...

  2. Struts学习之手动验证

    * 首先要从页面中获取对应的标签name属性的值,在动作类action中声明同名的属性,提供get和set方法    * 要继承ActionSupport类或者实现Validateable接口     ...

  3. 容易被误解的overflow:hidden

    http://www.ofcss.com/2011/03/20/misunderstood-of-overflow-hidden.html(转) 容易被误解的overflow:hidden 15条评论 ...

  4. Unix/Linux笔记全集

    1:Unix/Linux操作系统概述 要求:理解应用软件和操作系统的区别,掌握系统的Kernel(核心)和shell(外壳)之间的关系以及各自的作用 Solaris:Solaris 是Sun Micr ...

  5. TCP的阻塞和重传

    TCP的阻塞和重传 TCP的阻塞和重传机制 网络拥堵 现在网络上大部分的网络请求都是以TCP的方式进行传输的了.网络链路是固定的,各种链路情况也是不一样的.网络拥堵一直是TCP协议设计和使用的时候尽力 ...

  6. android ListView的上部下拉刷新下部点击加载更多具体实现及拓展

    android ListView的上部下拉刷新下部点击加载更多具体实现及拓展 ListView下拉刷新,上拉自动加载更多 下拉刷新以及加载更多

  7. XHProf 初探

    XHProf是一个分层PHP性能分析工具.它报告函数级别的请求次数和各种指标,包括阻塞时间,CPU时间和内存使用情况.一个函数的开销,可细分成调用者和被调用者的开销,XHProf数据收集阶段,它记录调 ...

  8. Netty那点事: 概述, Netty中的buffer, Channel与Pipeline

    Netty那点事(一)概述 Netty和Mina是Java世界非常知名的通讯框架.它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户ne ...

  9. highlight a DOM element on mouse over, like inspect does

    highlight a DOM element on mouse over, like inspect does highlight a DOM element on mouse over, like ...

  10. Lua环境配置 windows + VS

    环境搭建: 首先从 http://www.lua.org/ftp/下载lua 源码, 我选择的是lua-5.1.5.tar.gz 我的开发环境是Win7+ VS2010 打开VS2010新建一个工程L ...