一、sort命令:排序
参数:
-n 纯数字排序
-r 倒序
-u 去掉重复数字
-o 输出到指定文件中
-t 指定分隔符
-k 指定要排序的列
[root@server ~]# sort westos (默认以第一个数字排序)
1
12
123
2
3
32
5
51
6
7
[root@server ~]# sort -n westos
1
2
3
5
6
7
12
32
51
123
[root@server ~]# sort -u westos
1
12
123
2
3
32
5
51
6
7
[root@server ~]# sort -t : -k 2 westos (此时没有n参数,默认以第二列数字的第一个数字大小排序)
2:0
12:10
2:12
3:2
51:20
5:21
123:22
32:31
5:4
6:4
1:5
51:55
123:66
7:79
[root@server ~]# sort -nt : -k 2 westos
2:0
3:2
5:4
6:4
1:5
12:10
2:12
51:20
5:21
123:22
32:31
51:55
123:66
7:79
[root@server ~]# sort -nt : -k 2 westos -o /mnt/file ##指定以:为分隔符按第二列纯数字排序,输出到/mnt/file
二、uniq命令:对重复字符处理
参数
-u 显示唯一的行
-d 显示重复的行
-c 每行显示一次并统计重复次数
[root@server ~]# sort -n westos | uniq -c
1 0
1 1
2 2
1 4
1 6
1 9
2 10
1 20
1 22
2 31
1 55
[root@server ~]# sort -n westos | uniq -d
2
10
31
[root@server ~]# sort -n westos | uniq -u
0
1
4
6
9
20
22
55
三、练习
将/tmp目录中的文件取出最大的
[root@server mnt]# ll /tmp
total 4
drwx------. 2 root root 23 Dec 22 06:42 ssh-o63BsvHdpEJR
drwx------. 3 root root 16 Dec 22 06:40 systemd-private-Bsnm8D
drwx------. 3 root root 16 Dec 9 07:54 systemd-private-knpjXn
drwx------. 3 root root 16 Dec 9 07:52 systemd-private-LpoUQZ
drwx------. 3 root root 16 Dec 22 06:42 systemd-private-OmwKO5
drwx------. 3 root root 16 Dec 22 06:40 systemd-private-OWrNwD
drwx------. 3 root root 16 Dec 9 07:52 systemd-private-xoctWX
-rw-------. 1 root root 563 Dec 22 06:42 yum_save_tx.2018-12-22.06-42.wwVZCI.yumtx
第一种:
[root@server mnt]# ll /tmp | sort -nk 5 | cut -d " " -f 9 | tail -n 1
yum_save_tx.2018-12-22.06-42.wwVZCI.yumtx
第二种:
[root@server mnt]# ls -Sl /tmp/ | head -2 | cut -d " " -f 9
yum_save_tx.2018-12-22.06-42.wwVZCI.yumtx
四,test命令
test "$a" == "$b" 等同于 [ "$a" == "$b" ]
[ "$a" =="$b" ] 等于
[ "$a" != "$b" ] 不等于
[ "$a" -eq "$b" ] 等于
[ "$a" -ne "$b" ] 不等于
[ "$a" -le "$b" ] 小于等于
[ "$a" -ge "$b" ] 大于等于
[ "$a" -gt "$b" ] 大于
[ "$a" -lt "$b" ] 小于
[ "$a" -ne "$b" -a "$a" -gt "$b" ] -a:(and)必须条件都满足
[ "$a" -ne "$b" -o"$a" -gt "$b" ] -o:(or)条件至少满足一个
[ -z "$a" ] 是否为空
[ -e "file" ] 是否存在
[ -f "file" ] 普通文件
[ -b "file" ] 块设备
[ -S "file" ] 套接字
[ -c "file" ] 字符设备
[ -L "file" ] 软链接
练习1:判断输入的数字是否在10以内
- 输入是否为空
- 是否在10以内
- 0<$a<10 --> yes
- $a<1 $a>10 --> no
[root@server test]# cat data.sh
#!/bin/bash
[ -z "$1" ] && {
echo "please input a number!" ##如果未输入数,就提示
exit 1 ###非正常退出
}
[ "$1" -gt "0" -a "$1" -lt "10" ] && { ##判断如果输入的数在0-10的范围内就输出YES
echo "YES"
} || {
echo "NO" ##否则输出NO
}
[root@server test]# sh data.sh
please input a number!
[root@server test]# sh data.sh 1
YES
[root@server test]# sh data.sh 54
NO
练习2:判断文件类型
[root@server test]# cat file.sh
#!/bin/bash
read -p "请输入文件或设备名:" a
[ -e "$a" ]&&{ ###判断该文件是否为空
echo "this file exit!"
}||{
echo "This file doesn't exit !"
exit 1
}
[ -f "$a" ]&&{ ###判断文件是否为普通问价
echo "this file is a normal file"
}
[ -b "$a" ]&&{ ###判断文件是否是块文件
echo "this file is a block file"
}
[ -S "$a" ]&&{ ###判断文件是否是套接字
echo "this file is a socket"
}
[ -c "$a" ]&&{ ###判断文件是否是字符设备
echo "this file is a character device"
}
[ -L "$a" ]&&{ ###判断文件是否是软连接
echo "this file is a soft link"
}
[root@server test]# sh file.sh
请输入文件或设备名:
This file doesn't exit !
[root@server test]# sh file.sh
请输入文件或设备名:/dev/pts/0
this file exit!
this file is a character device