2021-08-18

# 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
```
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值