linux排序语言,Linux sort 排序命令uniq去重复行
sort命令
sort 命令對(duì) File 參數(shù)指定的文件中的行排序,并將結(jié)果寫(xiě)到標(biāo)準(zhǔn)輸出。如果 File 參數(shù)指定多個(gè)文件,那么 sort 命令將這些文件連接起來(lái),并當(dāng)作一個(gè)文件進(jìn)行排序。
sort語(yǔ)法
sort [-fbMnrtuk] [file or stdin]
選項(xiàng)與參數(shù):
-f :忽略大小寫(xiě)的差異,例如 A 與 a 視為編碼相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字來(lái)排序,例如 JAN, DEC 等等的排序方法;
-n :使用『純數(shù)字』進(jìn)行排序(默認(rèn)是以文字型態(tài)來(lái)排序的);
-r :反向排序;
-u :就是 uniq ,相同的數(shù)據(jù)中,僅出現(xiàn)一行代表;
-t :分隔符,默認(rèn)是用 [tab] 鍵來(lái)分隔;
-k :以那個(gè)區(qū)間 (field) 來(lái)進(jìn)行排序的意思
舉個(gè)栗子
對(duì)/etc/passwd 的賬號(hào)進(jìn)行排序
語(yǔ)句:cat /etc/passwd | sort
結(jié)果:sort 是默認(rèn)以第一個(gè)數(shù)據(jù)來(lái)排序,而且默認(rèn)是以字符串形式來(lái)排序,所以由字母 a 開(kāi)始升序排序。
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
以 : 來(lái)分隔的,以第三欄來(lái)排序
語(yǔ)句:cat /etc/passwd | sort -t ':' -k 3
結(jié)果:
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
默認(rèn)是以字符串來(lái)排序的,如果想要使用數(shù)字排序:
語(yǔ)句:cat /etc/passwd | sort -t ':' -k 3n
結(jié)果:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
默認(rèn)是升序排序,如果要倒序排序,如下
語(yǔ)句:/etc/passwd | sort -t ':' -k 3nr
結(jié)果:
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
ntp:x:106:113::/home/ntp:/bin/false
messagebus:x:105:109::/var/run/dbus:/bin/false
sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
如果要對(duì)/etc/passwd,先以第六個(gè)域的第2個(gè)字符到第4個(gè)字符進(jìn)行正向排序,再基于第一個(gè)域進(jìn)行反向排序。
語(yǔ)句:cat /etc/passwd | sort -t':' -k 6.2,6.4 -k 1r
結(jié)果:
sync:x:4:65534:sync:/bin:/bin/sync
proxy:x:13:13:proxy:/bin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
查看/etc/passwd有多少個(gè)shell:對(duì)/etc/passwd的第七個(gè)域進(jìn)行排序,然后去重
語(yǔ)句:/etc/passwd | sort -t':' -k 7 -u
結(jié)果:
root:x:0:0:root:/root:/bin/bash
syslog:x:101:102::/home/syslog:/bin/false
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
uniq命令
uniq命令可以去除排序過(guò)的文件中的重復(fù)行,因此uniq經(jīng)常和sort合用。也就是說(shuō),為了使uniq起作用,所有的重復(fù)行必須是相鄰的。
uniq語(yǔ)法
語(yǔ)法:uniq [-icu]
選項(xiàng)與參數(shù):
-i :忽略大小寫(xiě)字符的不同;
-c :進(jìn)行計(jì)數(shù);
-u :只顯示唯一的行;
舉個(gè)栗子
testfile文件內(nèi)容
hello
world
friend
hello
world
hello
語(yǔ)句:uniq testfile
結(jié)果:直接刪除未經(jīng)排序的文件,將會(huì)發(fā)現(xiàn)沒(méi)有任何行被刪除
hello
world
friend
hello
world
hello
語(yǔ)句:cat testfile | sort |uniq
結(jié)果:排序文件,默認(rèn)是去重
friend
hello
world
語(yǔ)句:sort testfile | uniq -c
結(jié)果:排序之后刪除了重復(fù)行,同時(shí)在行首位置輸出該行重復(fù)的次數(shù)
1 friend
3 hello
2 world
語(yǔ)句:sort testfile | uniq -dc
結(jié)果:僅顯示存在重復(fù)的行,并在行首顯示該行重復(fù)的次數(shù)
3 hello
2 world
語(yǔ)句:sort testfile | uniq -u
結(jié)果:僅顯示不重復(fù)的行
friend
總結(jié)
以上是生活随笔為你收集整理的linux排序语言,Linux sort 排序命令uniq去重复行的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux 关闭开机 ftp,解决lin
- 下一篇: linux /home recoveri