sort  -t " " -k 3 uy.txt 
同文本文件打交道的过程中,会遇到各种各样的与重复和顺序相关的任务,比较常用的就是sort、uniq,然后对文本的基本统计就是wc这个工具了。...
同文本文件打交道的过程中,会遇到各种各样的与重复和顺序相关的任务,比较常用的就是sort、uniq,然后对文本的基本统计就是wc这个工具了。sort命令能够对文件和stdin进行各种排序,uniq一般与sort结合使用来提取单一的行。sort和uniq结合能够用来查找重复数据。

1.sort

1.概览

sort按照指定的参数进行排序,支持按照数字排序和字典顺序排序。

排序的选项如下:

其中选项“-n”是使用数字进行排序(默认是按照文字字典顺序排序的)。还有更多额外选项可供选择:

2.特性与实例

1.指定排序字段

对于具有类似表格形式的文件来说,可以给定字段分隔符后,对指定字段进行排序,这是非常有效的功能。其中“-k”指定进行排序的字段,“-t”指定排序字段的分隔符(默认为tab键)。

user@ubuntu:~$ cat /etc/passwd | sort -t ":" -k 3
root:x:0:0:root:/root:/bin/bash
user:x:10:12:.....
....

2.排序顺序指定

sort支持多种排序顺序,-d指定字典顺序,-f忽略大小写,-i忽略不可打印字符,-h依据人类可读数值排序(3K、1G等),-n指定数值排序,-r指定逆序,-R使用随机排序,-M指定按月份排序。

user@ubuntu:~$ sort -nr file.txt
user@ubuntu:~$ sort -M file.txt
user@ubuntu:~$ sort -R file.txt

3.合并和检测

对于一个是否排序过的文件,可以使用-C选项进行检测,另外,对于多个已经排过序的文件,可以使用-m选项进行合并。

user@ubuntu:~$ sort -m sorted1 sorted2
sort -C file;
if [ $? -eq 0 ]; thenecho sorted!;
elseecho unsorted!;
fi

2.uniq

在使用sort排序完成之后,对于完全相同的行会连续排列在一起,为了去除这些重复的行,uniq工具就是专为此准备的:将连续的重复行删除只显示一行。

1.概览

uniq只能使用排序过的数据输入,因此uniq要么使用管道,要么使用排序过的文件,以这种方式与sort命令结合起来使用。

2.特性实例

除了基本的从排过序的文件中去除重复行的功能外,还提供了其他选项增强了这个命令的功能。-u选项只输出唯一的行,-d选项只输出重复的行,-c选项可以为每一行加上出现的次数的前缀。

user@ubuntu:~$ echo -e "bash\ntest\ntest\nroot" | uniq -u
bash
root
user@ubuntu:~$ echo -e "bash\ntest\ntest\nroot" | uniq -d
test
user@ubuntu:~$ echo -e "bash\ntest\ntest\nroot" | uniq -c1 bash2 test1 root

使用上述的-c选项就可以有多重活用,最常用的就是统计文件词频信息,基本步骤就是将文件所有连续空格压缩为一个,然后将所有空格替换为换行符使得每一个单词变为单独一行。最后使用sort进行排序使得相同单词连续排布以及uniq -c进行统计。

user@ubuntu:~$ echo -e "bash\ntest a bash\ntest\nroot" | tr -s ' ' '\n' | sort | uniq -c1 a2 bash1 root2 test

另外可以使用-s和-w来指定键:-s跳过前N个字符,-w指定用于比较的最大字符数。这样就可以对某个字段进行排序了。最后一个实例,可以使用uniq得出字符串样式。任何一个字符串,只要一个字符重复出现就在前面加上它出现过的次数。

user@ubuntu:~$ echo abcbhdccd | sed 's/[^\n]/&\n/g' | sed '/^$/d' | sort | uniq -c | tr -d ' \n'
1a2b3c2d1h

3.wc

wc命令就是word count的简称,顾名思义就是对文件进行基本的单词统计。

1.概览

wc的默认是按照行数、单词、字符、字节、最长的行的长度这个顺序打印出文件的统计信息。从上述选项中可以看出,我们可以指定不所需要的信息输出。

2.实例

不管是指定一个还是多个需要输出的选项,各自的输出相对顺序是不变的。

<pre class="prettyprint ruby" http:="" www.ahlinux.com="" start="" cmd="" 9040.html"="" target="_blank" style="margin-top: 0px; margin-bottom: 0px; padding: 0.3em;">nlo, Consolas, 'Courier New', monospace; color: rgb(51, 51, 51); border-radius: 4px; margin-top: 0px; margin-bottom: 1.5em; line-height: 1.5em; word-break: break-all; word-wrap: break-word; white-space: pre-wrap; border: 1px solid rgba(0, 0, 0, 0.14902); overflow-y: auto; background-color: rgb(246, 246, 246);">user@ubuntu:~$echo -e "this is a new line \nsecond line" | wc -l2user@ubuntu:~$echo -e "this is a new line \nsecond line" | wc -w7user@ubuntu:~$echo -e "this is a new line \nsecond line" | wc -c32user@ubuntu:~$echo -e "this is a new line \nsecond line" | wc -L19

Linux命令备忘实例——排序和基本统计命令相关推荐

  1. linux程序实例获取,Linux命令备忘实例(4)——获取内容

    Linux中的所有内容都是以文件的方式表示的,会有很多需求需要我们获取文件的内容,查看部分或者全部内容.当然最直接方式就是使用编辑器打开文件查看,比如vim.vi.emacs等.这里主要关注的是she ...

  2. KVM 虚拟机 virsh 命令备忘单

    这是一个全面的 virsh 命令备忘单: virsh 是 KVM 虚拟机的命令管理用户界面.virsh 可用于创建.暂停.重新启动和关闭域.此外,virsh 可用于列出您的虚拟化管理程序平台中可用的当 ...

  3. linux dprintk 日志,linux命令备忘

    2012-09-06 07:16 1234人阅读 评论(0) links -dump your.html html2txt lynx --dump your.html html2txt ldconfi ...

  4. RedHat Yum 命令备忘单

    Yum 是Red Hat和基于 Red Hat 的 Linux 发行版中的包管理器,它允许您管理 Red Hat 系统上软件的各个方面. 你不会在这里详细学习 Yum 命令,相反,这个 Yum 备忘单 ...

  5. freedos 常用命令_庆祝FreeDOS 24周年:有用的命令备忘单

    freedos 常用命令 FreeDOS在6月29日满24岁. FreeDOS是一个完整的,免费的,与DOS兼容的操作系统,您可以使用它来玩经典的DOS游戏 , 运行商务软件或开发嵌入式系统. 在MS ...

  6. 实用收藏Linux命令备忘

    系统操作 #使用shutdown命令马上重启系统 [root@H32 ~]# shutdown –r now  #使用shutdown命令马上关闭系统 [root@H32 ~]# shutdown – ...

  7. linux常用命令备忘(不断更新中...)

    1.模糊查找字符串 # find . "*" | xargs grep "ro.hardware" -rn --color # find -name " ...

  8. linux git 命令备忘

    1.查看某次提交的文件文件列表(不包括修改内容) git log --stat 2.清除本地所有修改(包括已加入缓冲区文件) git reset --hard  git clean -xdf 3.命令 ...

  9. 一些比较少用但比较有用的linux命令备忘

    网络相关 ssh 反向代理 ssh -fCNR 10000:localhost:22 userB@B.B.B.B B.B.B.B是一个外网机器B的IP ssh -p 10000 userA@local ...

最新文章

  1. 模型加速--CLIP-Q: Deep Network Compression Learning by In-Parallel Pruning-Quantization
  2. css3的动画特效--动画序列(animation)
  3. [CF1076E]Vasya and a Tree
  4. fcm模糊聚类matlab实例_一文学会使用MATLAB将仿真、试验数据可视化附带源程序
  5. ASP.NET和PHP全面对比
  6. SQLlite 分页
  7. MATLAB中如何删除坐标上已画出的内容
  8. 剑指offer 面试题17. 打印从1到最大的n位数
  9. 博弈论学习笔记(六)纳什均衡之约会游戏与古诺模型
  10. 在使用Assimp库时编译器报错:C2589 “(”:“::”右边的非法标记 AssimpLoadStl
  11. 穿戴-智能穿戴-ProjectGlass:谷歌眼镜(Google Project Glass)
  12. java openoffic linux_Linux操作系统下安装Openoffice3.2
  13. CvPoint及CvPoint2D32f
  14. WPS如何并排放置两张图片_动图演示如何制作XRD叠图与PDF卡线图
  15. 老生常谈:如何快速提升项目管理和团队效率?
  16. h5+css3简单实现网页端五子棋游戏1.0版
  17. Python wxpy 操作微信 大全集
  18. ubuntu开机出现initramfs该如何解决
  19. exp table oracle,oracle中exp,imp的使用详解
  20. C++中cout的格式使用

热门文章

  1. WinDBG中设置条件断点
  2. Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音
  3. 《『若水新闻』客户端开发教程》——12.代码编写(4)
  4. ViewFlipper中放入两个ListView不能拖动的情况
  5. Linux 基本权限管理
  6. django url 中的namespace详解
  7. hibernate 执行存储过程 方法
  8. 关于编写过程中进制之间的转换
  9. Laravel框架学习笔记(一)——phpstudy下的安装配置
  10. CSS3秘笈复习:第一章第二章第三章