官方澳门新永利下载:Linux文本管理工科具之sort

Linux文本管理工科具之sort,uniq实例详解

sort:将输入行遵照键值字段与数据类型选项以及locate排序

语法: sort [option] [file(s)]

重在选拔:

-b  忽略开端的空域

-c  检查文件是还是不是早已正确排序

-f  排序时马虎大小写,均视为大写字母

-m  将多少个排序好的文书,合併为五个排序后的输出数据流

-M  将眼下3个字母依照月份的缩写举行排序

-k  定义排序键值字段,遵照那么些字段(file)进行排序

-n  依照数值的轻重排序

-o outfile  将排序后的结果存入钦赐的文本

-r  以相反的依次来排序,由大到小

-t chat  使用单个字符chat作为暗中认可的字段分隔字符,替代暗中同意的空白字符

-u  独有独一的笔录,抛弃全数具同样键值的记录,同样的数码出现一回。

–help  显示扶助。

–version  显示版本音讯

1).以字段排序

排序键值字段类型

字母

说明

b

忽略开头的空白

d

字典顺序

f

不区分字母大小写

g

以一般的浮点数字进行比较,只适用于GNU版本

i

忽略无法打印的字符

n

以整数(数字)比较

r

倒置排序的顺序

实例1:以理念ASCII码顺序排序

[linuxidc@test ~]$ LC_ALL=C sort /etc/passwd 

#gzdev1:x:829:829::/home/gzdev1:/bin/bash

#gzdev2:x:830:830::/home/gzdev2:/bin/bash

Meat:x:814:814::/home/Meat:/bin/bash

adm:x:3:4:adm:/var/adm:/sbin/nologin

bin:x:1:1:bin:/bin:/sbin/nologin

cvsroot:x:778:502::/home/cvsroot:/bin/bash

dbus:x:81:81:System message bus:/:/sbin/nologin

dovecot:x:99:99:dovecot:/usr/libexec/dovecot:/sbin/nologin

ftpuser:x:505:505::/home/ftpuser:/bin/bash

gdm:x:42:42::/var/gdm:/sbin/nologin

 

附:

# LC_ALL=C 是为了去除全体本地化的装置,让命令能准确推行。

# LC_ALL
:它是二个宏,要是该值设置了,则该值会覆盖全部LC_*的设置值。注意,LANG的值不受该宏影响。

#
“C”是系统暗中认可的locale,”POSIX”是”C”的小名。所以当我们新安装完二个系统时,默许的locale就是C或POSIX。

 

实例2:以客商名称排序

[linuxidc@test ~]$ sort -t: -k1,1 /etc/passwd

adm:x:3:4:adm:/var/adm:/sbin/nologin

avahi:x:70:70:Avahi daemon:/:/sbin/nologin

bin:x:1:1:bin:/bin:/sbin/nologin

cvsroot:x:778:502::/home/cvsroot:/bin/bash

daemon:x:2:2:daemon:/sbin:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

gdm:x:42:42::/var/gdm:/sbin/nologin

# -t钦命分隔符为分号,-K钦点以第三个字段第三个字符实行排序

 

实例3:反向UID排序

[linuxidc@test ~]$ sort -t: -k3nr /etc/passwd

[linuxidc@ test ~]$ sort -t: -k3nr,3 /etc/passwd

# 更规范的字段规格应该为-k3,3nr 或-k3nr,3 或-k3,3 -n -r,

# 表示从字段3早先处先导,以数值类型反向排序,并终止与字段3的结尾

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

sninf_kenchoi:x:860:860::/home/sninf_kenchoi:/bin/bash

linuxidc:x:859:859::/home/linuxidc:/bin/bash

gz_kinma:x:857:857::/home/gz_kinma:/bin/bash

sninf_tonyhung:x:856:856::/home/sninf_tonyhung:/bin/bash

sninf_simonlau:x:855:855::/home/sninf_simonlau:/bin/bash

sninf_kenchan:x:854:854::/home/sninf_kenchan:/bin/bash

sninf_thomaschan:x:853:853::/home/sninf_thomaschan:/bin/bash

gz_jones:x:851:851::/home/gz_jonesyan:/bin/bash

#
-t钦点分隔符为分号,-K钦赐以第三个字段打开排序,n表示以大背头比较,r表示逆序

 

实例4:以独一的GID排序

[linuxidc@test ~]$ sort -t: -k4n -u /etc/passwd

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

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

news:x:9:13:news:/etc/news:

#
-t钦点分隔符为分号,-K内定以第3个字段进展排序,n表示以卡尺头比较,u表示独一排序

 

2).文本块排序

[linuxidc@test ~]$ cat > my-friends

#SORTKEY: ma,Kin

Kin ma

zhujiangxincheng 78

D-305 Letaijie

TaiShan

#SORTKEY:yan,Jones

Jones yan

Dongpu 68

B_602 Dongpujie

YangJiang

#SORTKEY:wu,Will

Will wu

Shangshe 36

A_205 Heguanlu

MaoMing

[linuxidc@test ~]$ cat my-friends |

awk -v RS=”” ‘{ gsub(“n”, “^Z”); print }’ | 

sort -f

#SORTKEY: ma,Kin ^ZKin ma^Zzhujiangxincheng 78 ^ZD-305 Letaijie
^ZTaiShan

#SORTKEY:wu,Will^ZWill wu^ZShangshe 36^ZA_205 Heguanlu^ZMaoMing

#SORTKEY:yan,Jones ^ZJones yan^ZDongpu 68^ZB_602 Dongpujie ^ZYangJiang

[linuxidc@ test ~]$ cat my-friends |  #在地点数据文件里的管道

awk -v RS=”” ‘{ gsub(“n”, “^Z”); print }’ |  #更动地址为单个行

sort -f |                                                               
      #排序地址数据,忽略大小写

awk -v ORS=”n” ‘{ gsub(“^Z”, “n”); print }’

#还原行结构,注意:部分本子不能够恢复生机

#gsub()功效为全局性替换,类似于sed下的s/x/y/g框架结构

#SORTKEY: ma,Kin

Kin ma

zhujiangxincheng 78

D-305 Letaijie

TaiShan

#SORTKEY:wu,Will

Will wu

Shangshe 36

A_205 Heguanlu

MaoMing

#SORTKEY:yan,Jones

Jones yan

Dongpu 68

B_602 Dongpujie

YangJiang

[linuxidc@ test ~]$ cat my-friends |

awk -v RS=”” ‘{ gsub(“n”, “^Z”); print }’ | 

sort -f |

awk -v ORS=”n” ‘{ gsub(“^Z”, “n”); print }’ |

grep -v ‘# SORTKRY’                          #去除标识行

 

3).sort的国泰民安:不安静

 

[linuxidc@ test ~]$ sort -t_ -k1,1 -k2,2 << EOF

> one_two

> one_two_three

> one_two_four

> one_two_five

> EOF

one_two

one_two_five

one_two_four

one_two_three

 

4).删除重复

uniq :过滤数据

选项 :

        -c 突显重复次数

        -d 仅突显重复行

        -u 仅显示未重复行

用法:

sort … | uniq …

 

实例:

[linuxidc@ test ~]$ cat > number     

one

two

threefour

four

five

two

one

one

[linuxidc@ test ~]$ sort number | uniq #排序

five

four

one

threefour

two

[linuxidc@ test ~]$ sort number | uniq -c #顺便展现重复次数

      1 five

      2 one

      1 threefour

      2 two

[linuxidc@test ~]$ sort number | uniq -d #仅体现重复行

one

two

[linuxidc@test ~]$ sort number | uniq -u #仅显示未重复行

five

threefour

[linuxidc@test ~]$

正文长久更新链接地址:http://www.linuxidc.com/Linux/2016-04/130089.htm

 

官方澳门新永利下载 1

发表评论

电子邮件地址不会被公开。 必填项已用*标注