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. oracle 架构和一些工具了解

    oracle的架构大概分为3部分, 客户端:用户端 oracle instance:叫做实例,由内存结构(内存池或者叫SGA)和后台进程组成.Oracle Instance是Oracle RDBMS的 ...

  2. linux初中级命令语言

    Linux:开源免费.大部分软件都可以自由获取,同样功能的软件选择较少.主要是字符模式,命令行界面且发行版本较多,难以集中攻击. Xshell与xftp是什么? xshell是一个客户端软件,我们本地 ...

  3. Laravel 中输出 SQL 语句的到 log 日志

    在 AppServiceProvider.php 中的 boot 方法中添加如下代码 即可 public function boot() { //数据库监听 DB::listen(function ( ...

  4. properties 文件解析

    1.提供properties文件 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/future?useUn ...

  5. 攻防世界 WEB 高手进阶区 XCTF 4th-CyberEarth ics-06 Writeup

    攻防世界 WEB 高手进阶区 XCTF 4th-CyberEarth ics-06 Writeup 题目介绍 题目考点 掌握暴力破解手段 Writeup 打开链接 http://220.249.52. ...

  6. Fiddler抓包工具简介:(三)手机端代理配置

    1.接入网络:需要在移动终端(手机或pad)上指定代理服务器为Fiddler所在主机的IP,端口默认为8888,要保证手机和安装有fiddler的电脑处在同一局域网内,手机能ping通电脑. [方法] ...

  7. es date_histogram强制补零

    es补零 GET /cars/transactions/_search { "size" : 0, "aggs": { "sales": { ...

  8. hudi clustering 数据聚集(二)

    小文件合并解析 执行代码: import org.apache.hudi.QuickstartUtils._ import scala.collection.JavaConversions._ imp ...

  9. [gym102978D]Do Use FFT

    前置知识 (以下内容并不严谨,可以参考论文<转置原理的简单介绍>) 对于一个算法,其为线性算法当且仅当仅包含以下操作: 1.$read\ i$,将$r_{i}$的值赋为(下一个)读入的元素 ...

  10. [luogu7417]Minimizing Edges P

    令$e_{G}(a)$和$o_{G}(a)$分别表示在图$G$中从1到$a$的长度为奇数/偶数的最短路(若该类最短路不存在则为$\infty$),不难得到有以下结论--$f_{G}(a,b)=\beg ...