正则表达式及 Sort、uniq、tr、cut、eval
一、sort命令
1. sort的作用
以行为单位对文件的内容进行排序,也可以根据不同的数据类型来排序。
2. 语法格式
sort [选项] 参数
cat file | sort 选项
3. 常用选项
常用选项 | 说明 |
---|---|
-f | 忽略大小写,会将小写字母都转换为大写字母来进行比较 |
-b | 忽略每行前面的空格 |
-n | 按照数字进行排序 |
-r | 反向排序 |
-u | 等同于uniq,表示相同数据仅显示一行 |
-t | 指定字段分隔符,默认使用[Tab]键分割 |
-k | 指定排序字段 |
-o <输出文件> | 将排序后的结果转存至指定文件 |
4. 使用实例
(1)sort命令
sort排序,首先比较每行第一个不为空的字符,按照空行>数字>字母(小写>大写)的优先级进行排序。若第一个字符相同,将比较第二个不为空的字符,以此类推。
[root@localhost ~]# cat test1.txt
one
two
three
four
five
six
seven
eight
Eight
EIGHT
1
11
12
2
3
4
[root@localhost ~]# sort test1.txt
1
11
12
2
3
4
eight
Eight
EIGHT
five
four
one
seven
six
three
two
(2)-f选项
使用-f选项,使得大写字母优先于小写字母排序。
[root@localhost ~]# sort -f test1.txt
12
1
11
2
3
4
EIGHT
Eight
eight
five
four
one
seven
six
three
two
(3)-n选项
由于sort命令是按照字符顺序进行比较,无法对数字进行有效排序。当我们需要对数字进行排序时,可使用-n选项。
[root@localhost ~]# sort -n test1.txt
eight
Eight
EIGHT
five
four
one
seven
six
three
two
1
2
3
4
11
12
(4)-r选项
使用-r选项,可以反向排序
[root@localhost ~]# sort -r test1.txt
two
three
six
seven
one
four
five
EIGHT
Eight
eight
4
3
2
12
11
1
(5)-u选项
使用-u选项,去重,将重复行显示为一行。
[root@localhost ~]# cat test2.txt
1
2
100
45
3
333
444
10
145
75
333
444
555
155
666
777
[root@localhost ~]# sort test2.txt
1
10
100
145
155
2
3
333
333
444
444
45
555
666
75
777
[root@localhost ~]# sort -u test2.txt
1
10
100
145
155
2
3
333
444
45
555
666
75
777
(6)-t -k选项
使用-t选项,可指定分隔符;-k选项指定排序列。
可使用“sort -t ':' -k3 -n /etc/passwd”命令对/etc/passwd文件的第三列按照数字大小进行排序。
[root@localhost ~]# sort -t ':' -k3 -n /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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
named:x:25:25:Named:/var/named:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
abrt:x:173