# sort
参考:https://wangchujiang.com/linux-command/c/sort.html
-b, --ignore-leading-blanks 忽略开头的空白。
-f, --ignore-case 将小写字母作为大写字母考虑。
-h, --human-numeric-sort 根据存储容量排序(注意使用大写字母,例如:2K 1G)。
-hr 从到到小
-n, --numeric-sort 根据数字排序。
-nr 根据数字排序。从大到小
cat sort_t | sort -t S -k 2 以字符串S为分隔符按照第二列分割
-k, --key=KEYDEF 通过一个key排序;KEYDEF给出位置和类型。
-t, --field-separator=SEP 使用SEP作为列的分隔符。
```
[ck153117137@shell.ceshiren.com test]$ cat sort_t | sort -t S -k 2
1.2.3.4
2.1.2.3
3.3.4.2
6.4.9.7
8.7.6.4
2SP1SP2SP3
1SP2SP3SP4
3SP3SP4SP2
6SP4SP9SP7
8SP7SP6SP4
```
-o, --output=FILE 将结果写入FILE而不是标准输出。
## 给下面文件中的数据去重并排序
cat uniq_demo.txt |sort -k 3 | uniq -c -f 2 | sort -nr
# 解析:
sort -k 3 指定第三列排序
uniq -c 去重在行首显示该行重复出现的次数
-f 忽略比较指定的栏位。 因为重复的IP的第一列可能是不同值 所以忽略前两行
-nr 根据数字排序。从大到小
```
[ck153117137@shell.ceshiren.com test]$ cat uniq_demo.txt |sort -k 3 | uniq -c -f 2 | sort -nr
14 18221511 pts/10 223.71.133.42
4 ck143117 pts/11 60.208.90.202
4 21609891 pts/12 101.230.255.202
3 ck146119 pts/10 116.237.250.188
3 ck141731 pts/14 61.140.133.96
3 70146364 pts/10 106.39.114.134
3 21609891 pts/10 58.35.66.243
2 ck153307 pts/10 119.253.43.100
2 ck146400 pts/1 112.10.50.241
2 ck144530 pts/10 116.233.212.19
2 ck140752 pts/10 111.202.144.35
2 ck140081 pts/4 221.219.101.182
2 ck140081 pts/12 113.65.231.23
2 95015293 pts/11 36.113.11.39
2 68949047 pts/13 183.228.90.226
1 xly20456 pts/2 120.52.147.46
1 dx371407 pts/0 111.196.166.76
1 ck155454 pts/1 117.149.23.194
1 ck151573 pts/9 124.74.76.126
1 ck148853 pts/5 219.137.140.149
1 ck148853 pts/3 119.131.106.44
1 ck146264 pts/0 111.23.244.189
1 ck141906 pts/0 120.52.147.49
1 82894931 pts/12 36.112.85.179
1 81368355 pts/5 220.249.55.194
1 68821400 pts/4 183.63.81.211
1 50153372 pts/4 223.104.148.19
1 50153372 pts/11 117.136.68.46
1 26611853 pts/2 111.197.21.141
1 18760789 pts/0 1.95.141.31
1 16210504 pts/3 58.33.96.123
1 13863896 pts/9 183.6.105.176
1 12221712 pts/0 101.228.81.73
1 08036051 pts/2 182.138.102.27
1 04300137 pts/5 180.168.96.174
1 04300137 pts/0 223.104.212.185
```
# sed
### 常用动作
#### a:新增 sed -e '4 a newline'
```
# 在第四行的后面插入newline
[ck153117137@shell.ceshiren.com ~]$ sed '4 a newline' test01.txt
abrji1
hello2
yao3
hhah5
newline
yaoyingdong6
jdisajid1231234
yao3
```
### c:取代 sed -e '2,5c NO 2-5 number'
c后面的内容取代2-5行的内容
```
# 原:
[ck153117137@shell.ceshiren.com ~]$ cat test01.txt
abrji1
hello2
yao3
hhah5
yaoyingdong6
jdisajid1231234
yao3
```
```
#新
[ck153117137@shell.ceshiren.com ~]$ sed '2,5c no such element' test01.txt
abrji1
no such element
jdisajid1231234
yao3
```
### d:删除 sed -e '2,5d'
```
[ck153117137@shell.ceshiren.com ~]$ sed -e '2,5d' test01.txt
abrji1
jdisajid1231234
yao3
```
### i:插入 sed -e '2i newline'
```
[ck153117137@shell.ceshiren.com ~]$ sed '2i newline' test01.txt
abrji1
newline
hello2
yao3
hhah5
yaoyingdong6
jdisajid1231234
yao3
```