Shell学习(七)——sort、uniq、cut、wc命令详解

转自:[1]linux sort,uniq,cut,wc命令详解 https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858385.html

一、sort命令

转自:

[1]Linux sort命令 https://www.runoob.com/linux/linux-comm-sort.html

[2]sort命令详解 https://www.cnblogs.com/machangwei-8/p/9570937.html

1、命令格式

sort [选项] [文件]

2、Sort命令常用参数

短参数	长参数	                 说明
-n – number-sort 按字符串数值排序,与-g区别为不转为浮点数
-g –general-number-sort 按通用数值排序,支持科学计数法
-f –ignore-case 忽略大小写,默认大小写字母不同
-k –key=POS1[,POS2] 排序从POS1开始,若指定POS2,则POS2结束,否则以pos1排序
-t –field-separator=SEP 指定列的分割符
-r –reverse 降序排序,默认为升序
-h –human-numeric-sort 使用易读性数字(例如: 2K 1G)
-u –unique 去除重复的行
-o –output=FILE 将输出写入文件

3、常用用法举例

(1)默认排序
默认情况下,sort命令,以字母序进行文本排序。如下: shuanghu@shuanghu:tmp$cat word.txt
one
two
three
four shuanghu@shuanghu:tmp$sort word.txt
four
one
three
two
(2)数字排序
如果想对数字进行排序,可以使用-n参数 shuanghu@shuanghu:tmp$ cat num.txt
100
20
3
shuanghu@shuanghu:tmp$ sort num.txt -n
3
20
100
(3)指定排序
sort排序的时候,可以按字段分割的数据进行排序。-t参数表示行的分割字符,-k表示第几列。当然,可以进行降序排序,-r参数可以实现。
下面是对passwd文件,以冒号(:)进行分割,然后对第三列以数字方式进行降序排序。 shuanghu@shuanghu:etc$ cat passwd
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
shuanghu@shuanghu:etc$ sort -t ':' -k 3 -nr passwd
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
games:x:5:60:games:/usr/games:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
sys:x:3:3:sys:/dev:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
(4)文件夹大小排序
在du的时候,加上-h可以使用易读性数字,比如2k,1g,3M这种。sort也支持-h参数。
比如,du一个文件夹下的目录大小后,想以文件大小进行排序。由于du -h的结果是3k,2M,1G这种,不能简单的按数字排序。所以,可以使用-h参数。具体如下: shuanghu@shuanghu:tmp$ du -h
2.0G ./test2
4.0K ./test3
316M ./test
2.3G .
shuanghu@shuanghu:tmp$ du -h |sort -hr
2.3G .
2.0G ./test2
316M ./test
4.0K ./test3
(5)系统进程内存占用排序
查看系统进程中,内存占用最多的前5个进程信息 shuanghu@shuanghu:tmp$ ps aux|sort -gr -k 4|head -n 5
shuanghu 1740 15.7 4.6 1506764 189872 ? Sl 5月07 142:08 compiz
root 1304 2.1 1.9 338928 80208 tty7 Ssl+ 5月07 19:29 /usr/bin/X -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
shuanghu 1933 0.0 1.1 1074520 46708 ? Sl 5月07 0:00 /usr/lib/evolution/evolution-calendar-factory
shuanghu 1833 0.0 0.8 974900 34468 ? Sl 5月07 0:01 nautilus -n
shuanghu 2111 0.0 0.6 655712 24920 ? Sl 5月07 0:16 gnome-terminal
(6)对文件内容去重排序
如果文件内容有很多重复的,需要进行去重。sort也是支持的,可以通过-u参数使用 shuanghu@shuanghu:tmp$cat word.txt
one
two
two
three
three
three
four
four
four shuanghu@shuanghu:tmp$sort -u word.txt
four
one
three
two
(7)将sort输出内容写入文件
在shell中,一般将控制台内容写入文件,可以使用重定向,但如果想把sort的排序内容写回文件,则不能使用重定向。则需要-o参数。具体如下: shuanghu@shuanghu:tmp$cat word.txt
one
two
three
four
shuanghu@shuanghu:tmp$sort word.txt > word.txt
shuanghu@shuanghu:tmp$cat word.txt #输出为空 shuanghu@shuanghu:tmp$sort word.txt -o word.txt
shuanghu@shuanghu:tmp$sort -u word.txt
four
one
three
two

二、uniq命令

[1]Linux uniq 命令 https://www.runoob.com/linux/linux-comm-uniq.html

[2]Linux uniq命令详解 https://www.cnblogs.com/ftl1012/p/uniq.html

1、命令格式

uniq [选项] [文件]

2、uniq命令常用参数

从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。
不附加任何选项时匹配行将在首次出现处被合并。
-c, --count 在每行前加上表示相应行目出现次数的前缀编号
-d, --repeated 只输出重复的行
-D, --all-repeated[=delimit-method 显示所有重复的行
delimit-method={none(default),prepend,separate}
以空行为界限
-f, --skip-fields=N 比较时跳过前N列
-i, --ignore-case 在比较的时候不区分大小写
-s, --skip-chars=N 比较时跳过前N个字符
-u, --unique 只显示唯一的行
-z, --zero-terminated 使用'\0'作为行结束符,而不是新换行
-w, --check-chars=N 对每行第N个字符以后的内容不作对照
--help 显示此帮助信息并退出
--version 显示版本信息并退出 若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中字符前的空字符将被跳过。 提示:uniq 不会检查重复的行,除非它们是相邻的行。
如果您想先对输入排序,使用没有uniq 的"sort -u"。

3、常用用法举例

testfile的内容如下

cat testfile
hello
world
friend
hello
world
hello 直接删除未经排序的文件,将会发现没有任何行被删除 #uniq testfile
hello
world
friend
hello
world
hello 排序文件,默认是去重 #cat words | sort |uniq
friend
hello
world 排序之后删除了重复行,同时在行首位置输出该行重复的次数 #sort testfile | uniq -c
1 friend
3 hello
2 world 仅显示存在重复的行,并在行首显示该行重复的次数 #sort testfile | uniq -dc
3 hello
2 world 仅显示不重复的行 sort testfile | uniq -u
friend

三、cut命令

[1]Linux下的cut选取命令详解 https://www.cnblogs.com/longjshz/p/5792502.html

1、命令格式

cut [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]

2、常用参数

使用说明
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File参数,cut命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。

3、常用用法举例

(1)cut -b
[root@master etc]# who|cut -b 3-5,8
okee
okee
“字节”定位中,提取第3,第4、第5和第8个字节,-b支持形如3-5的写法,而且多个定位之间用逗号隔开
注意,cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。可不能颠倒定位的顺序哦。
[root@master etc]# who|cut -b 9,3-5
oker
oker
同时还可以用-3表示从第一个字节到第三个字节,而3-表示从第三个字节到行尾
[root@master etc]# who|cut -b -3
zoo
zoo
[root@master etc]# who|cut -b 3-
okeeper pts/0 2016-08-20 20:04 (192.168.184.1)
okeeper pts/2 2016-08-18 19:25 (192.168.184.1)
这两种情况下,都是选中第三个字节,同时出现-3,3-也不会出现重复
[root@master etc]# who|cut -b 3-,-3
zookeeper pts/0 2016-08-20 20:04 (192.168.184.1)
zookeeper pts/2 2016-08-18 19:25 (192.168.184.1)
(2)cut -c
-b是字节,-c则是字符,注意一点就是:一个空格算一个字节,一个汉字算三个字节
[rocrocket@rocrocket programming]$ cat cut_ch.txt
星期一
星期二
星期三
星期四
[rocrocket@rocrocket programming]$ cut -b 3 cut_ch.txt




[rocrocket@rocrocket programming]$ cut -c 3 cut_ch.txt




[rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -b 2




[rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -nb 2  --当遇到多字节字符时,可以使用-n选项,-n用于告诉cut不要将多字节字符拆开
[rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -nb 1,2,3  --当遇到多字节字符时,可以使用-n选项,-n用于告诉cut不要将多字节字符拆开




(3)cut -d -f
[root@master etc]# cat /etc/passwd |head -n 5
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@master etc]# cat /etc/passwd|head -n 5|cut -d : -f 1
root
bin
daemon
adm
lp
[root@master etc]# cat /etc/passwd|head -n 5|cut -d : -f 1,3-5
root:0:0:root
bin:1:1:bin
daemon:2:2:daemon
adm:3:4:adm
lp:4:7:lp

四、wc命令

[1]linux之wc命令详解 https://www.cnblogs.com/iloveyouforever/p/4014332.html

1、命令格式

wc [options] 文件

2、常用参数

统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。
wc同时也给出所指定文件的总统计数。
-c  统计字节数
-l    统计行数
-m    统计字符数。这个参数不能与 -c 参数一起使用。
-w    统计字数。一个字被定义为空白、跳格或换行字符分隔的字符串。
-L    打印最长行的长度
--help  显示帮助信息
--version 显示版本信息

3、常用用法举例

Shell学习(七)——sort、uniq、cut、wc命令详解的更多相关文章

  1. linux sort,uniq,cut,wc命令详解

    linux sort,uniq,cut,wc命令详解 sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些 ...

  2. (转)linux sort,uniq,cut,wc命令详解

    linux sort,uniq,cut,wc命令详解 sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些 ...

  3. [转]linux sort,uniq,cut,wc命令详解

    sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 ...

  4. Linux之 sort,uniq,cut,wc命令详解

    sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 ...

  5. Ubuntu 14.10 下sort,uniq,cut,wc命令详解

    sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 ...

  6. linux sort,uniq,cut,wc命令详解 (转)

    sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 ...

  7. sort,uniq,cut,wc命令详解

    sortsort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 s ...

  8. (F) linux sort,uniq,cut,wc命令详解

    F:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858385.html sort sort 命令对 File 参数指定的文件中的行排序,并 ...

  9. uniq cut wc 命令详解

    uniq uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用.也就是说,为了使uniq起作用,所有的重复行必须是相邻的. uniq语法 [root@www ~]# uniq [ ...

随机推荐

  1. 剖析虚幻渲染体系(12)- 移动端专题Part 1(UE移动端渲染分析)

    目录 12.1 本篇概述 12.1.1 移动设备的特点 12.2 UE移动端渲染特性 12.2.1 Feature Level 12.2.2 Deferred Shading 12.2.3 Groun ...

  2. ELK集群之elasticsearch(3)

    Elasticsearch-基础介绍及索引原理分析 介绍 Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引 ...

  3. 攻防世界 Misc 新手练习区 如来十三掌 Writeup

    攻防世界 Misc 新手练习区 如来十三掌 Writeup 题目介绍 题目考点 佛曰加密.base64.Rot13等加密方法的了解 Writeup 下载并打开附件 联想到佛曰加密,复制内容到 佛曰加密 ...

  4. PTA 7-1 公路村村通 (30分)

    PTA 7-1 公路村村通 (30分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N ...

  5. springboot利用mock进行junit单元测试,测试controller

    1  spring-boot-starter-test内置mockito,添加pom依赖 <dependency> <groupId>org.springframework.b ...

  6. Oracle Error while trying to retrieve text for error ORA-01804

    我在Linux上编译C++程序,有这个错误. 本机情况: Linux上Oracle的安装情况,服务器上有两个Client版本.我在Makefile中使用了高版本的动态库. 原因: 1.首先排查下 tn ...

  7. 一行导出所有任意微软SQL server数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解

    文章标题: 一行导出所有任意微软SQL serer数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解 关键字 : mssql-scripter,SQL Server 文章分 ...

  8. eclipse查看jar包源代码

    方法一:将jd-gui集成在Eclipse中 https://jingyan.baidu.com/article/b24f6c8275536686bfe5daed.html    下载2个反编译文件, ...

  9. 『学了就忘』Linux软件包管理 — 47、Linux源码包的安装和卸载

    目录 1.源码包安装服务的注意事项 2.源码包安装服务的过程 3.源码包安装服务的删除 4.源码包安装服务的启动 5.源码包安装服务的关闭 1.源码包安装服务的注意事项 (1)安装服务选择哪种软件包? ...

  10. Eclipse使用JDBC方式连接SQLServer2008

    JDBC_连接数据库一.配置 (一)  通过SQL Server配置管理器配置相关部分: 右键点击,启动tcp/ip协议右键点击属性查看自己的TCP端口号,记住,后面会用到右键点击SQL Server ...