sort降序shell_linux常用命令(shell脚本常用命令)(grep、cut、sort、uniq、seq、tr、basename、dirname)...

本章命令:

1

2

3

4

5

6

grep

cut

sort

uniq

seq

tr

#1、grep

作用:过滤文本内容

选项

描述

-E :--extended--regexp

模式是扩展正则表达式(ERE)

-i :--ignore--case

忽略大小写

-n: --line--number

打印行号

-o:--only--matching

只打印匹配的内容

-c:--count

只打印每个文件匹配的行数

-B:--before--context=NUM

打印匹配的前几行

-A:--after--context=NUM

打印匹配的后几行

-C:--context=NUM

打印匹配的前后几行

--color[=WHEN]

匹配的字体颜色,别名已定义了

-v:--invert--match

打印不匹配的行

-e

多点操作eg:grep -e "^s" -e "s$"

###样本文件内容

[root@ken ~]# cat test

dlakdlad

ad

ad

a

dFSAF

A

F

F

AS

F

f

sf

as

f

实例1:打印出所有的a无论大小写 : -i选项

╭─root@localhost.localdomain ~

╰─➤ grep -i “a” test

dlakdlad

ad

ad

a

dFSAF

A

AS

as

实例2:打印出所有的a无论大小写,并且显示该字符串所在的行 : -n选项

╭─root@localhost.localdomain ~

╰─➤ grep -i -n “a” test

1:dlakdlad

2:ad

3:ad

4:a

5:dFSAF

6:A

9:AS

13:as

实例3:仅仅打印出所有匹配的字符串: -o选项

╭─root@localhost.localdomain ~

╰─➤ grep -i -o “a” test

a

a

a

a

a

A

A

A

a

实例4:打印出匹配的字符串有多少行 -c选项

╭─root@localhost.localdomain ~

╰─➤ grep -i -c “a” test

8

实例5:打印出字符S前面的2行 -B

╭─root@localhost.localdomain ~

╰─➤ grep -B 2 “S” test

ad

a

dFSAF

F

F

AS

实例6:打印出字符S后面的2行 -A

╭─root@localhost.localdomain ~

╰─➤ grep -A 2 “S” test

dFSAF

A

F

AS

F

f

实例7:打印出字符S前后2行 -C

╭─root@localhost.localdomain ~

╰─➤ grep -C 2 “S” test

ad

a

dFSAF

A

F

F

AS

F

f

实例8:打印出不包含大小s的所有行 取反 -v

╭─root@localhost.localdomain ~

╰─➤ grep -i -v “s” test

dlakdlad

ad

ad

a

A

F

F

F

f

f

grep可以从文件当中直接搜索某个关键词,也可以从标准输入里面搜错

╭─root@localhost.localdomain ~

╰─➤ grep root /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

╭─root@localhost.localdomain ~

╰─➤ cat /etc/passwd | grep “root”

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

#2.cut

-c :以字符为单位进行分割。 -d :自定义分隔符。 -f :与-d一起使用,指定显示哪个区域。

实例1:获取6位随机加密数

╭─root@localhost.localdomain ~

╰─➤ echo $RANDOM | md5sum | cut -c 1-6

bb2788

╭─root@localhost.localdomain ~

╰─➤ echo $RANDOM | md5sum | cut -c 1-6

45a0e0

实例2:截取指定的字符串

╭─root@localhost.localdomain ~

╰─➤ echo “abcd” | cut -c 2

b

实例3:截取出来/etc/passwd用户名

╭─root@localhost.localdomain ~

╰─➤ cat /etc/passwd | cut -d “:” -f 1

root

bin

daemon

adm

lp

sync

shutdown

halt

实例4:截取出来/etc/passwd用户的shell类型

╭─root@localhost.localdomain ~

╰─➤ cat /etc/passwd | cut -d “:” -f 7

/bin/bash

/sbin/nologin

/sbin/nologin

/sbin/nologin

/sbin/nologin

/bin/sync

/sbin/shutdown

实例5:截取出来/etc/passwd用户以及shell类型

╭─root@localhost.localdomain ~

╰─➤ cat /etc/passwd | cut -d “:” -f 1,7

root:/bin/bash

bin:/sbin/nologin

daemon:/sbin/nologin

adm:/sbin/nologin

lp:/sbin/nologin

sync:/bin/sync

shutdown:/sbin/shutdown

halt:/sbin/halt

#3.sort

-k:根据切割后的那一段进行排序 -n 依照数值的大小排序(默认是根据字符进行排序)。 -r 以相反的顺序来排序。 -t 指定排序时所用的栏位分隔字符。 -u:去除重复的行(只要那个指定的字段重复,就认定是重复的行)

演示文件

╭─root@localhost.localdomain ~

╰─➤ cat test

12

23

2

3

5

实例1:以数字排序 -n

╭─root@localhost.localdomain ~

╰─➤ sort test

12

2

23

3

5

╭─root@localhost.localdomain ~

╰─➤ sort -n test

2

3

5

12

23

实例2:降序排序

╭─root@localhost.localdomain ~

╰─➤ sort -n -r test

23

12

5

3

2

实例3:降序排序并取出前3行

╭─root@localhost.localdomain ~

╰─➤ sort -n -r test | head -3

23

12

5

演示文件

╭─root@localhost.localdomain ~

╰─➤ cat test

12:3

23:4

2:12

3:5

5:23

实例4:以冒号为分隔符,第二列进行数字降序排序

╭─root@localhost.localdomain ~

╰─➤ cat test | sort -t “:” -k2 -n -r

5:23

2:12

3:5

23:4

12:3

演示文本:

╭─root@localhost.localdomain ~

╰─➤ cat test

12:3

12:3

12:3

12:3

23:4

2:12

3:5

3:5

3:5

3:5

5:23

实例5:显示行并去除重复行

╭─root@localhost.localdomain ~

╰─➤ sort -u test

12:3

2:12

23:4

3:5

5:23

#4. uniq

-c:(count)在行首用数字表示该行出现了多少次 -u:仅仅显示那些没有出现重复过的行

演示文件

╭─root@localhost.localdomain ~

╰─➤ cat test

12:3

12:3

12:3

12:3

23:4

2:12

3:5

3:5

3:5

3:5

5:23

实例1:统计每行出现的次数

╭─root@localhost.localdomain ~

╰─➤ uniq -c test

4 12:3

1 23:4

1 2:12

4 3:5

1 5:23

实例2:演示没有出现出重复行的数量

╭─root@localhost.localdomain ~

╰─➤ uniq -u test

23:4

2:12

5:23

#5、seq

实例1:

╭─root@localhost.localdomain ~

╰─➤ seq 5

1

2

3

4

5

实例2:

╭─root@localhost.localdomain ~

╰─➤ seq 2 5

2

3

4

5

实例3:

╭─root@localhost.localdomain ~

╰─➤ seq 2 2 10 #第一个2是起始位,第二个2是步长,第三个10是终止位

2

4

6

8

10

实例4:取出100以内所有的奇数

╭─root@localhost.localdomain ~

╰─➤ seq 1 2 100

1

3

5

7

9

11

13

15

17

实例5:取出100以内所有的偶数

╭─root@localhost.localdomain ~

╰─➤ seq 2 2 100

2

4

6

8

10

12

14

16

#6.tr命令:命令用于转换或删除文件中的字符

-d:删除指定的字符串

实例1:把所有的小写字母都转化为大写字母

╭─root@localhost.localdomain ~

╰─➤ echo “daadadfaedqdac” | tr a-z A-Z

DAADADFAEDQDAC

实例2:把所有的大写字母都转化为小写字母

╭─root@localhost.localdomain ~

╰─➤ echo “SDSDA2WZFAF” | tr A-Z a-z

sdsda2wzfaf

实例3:删除一行中的空格

╭─root@localhost.localdomain ~

╰─➤ echo “ada dada dada” | tr -d ” ”

adadadadada

###应用实例:获取主机IP地址

╭─root@localhost.localdomain ~

╰─➤ ip a | grep global | cut -d " " -f 6 | cut -d "/" -f1

192.168.80.3

###应用实例:获取6位随机密码

╭─root@localhost.localdomain ~

╰─➤ echo $RANDOM |md5sum|cut -c 1-6

6a492b

╭─root@localhost.localdomain ~

╰─➤ echo $RANDOM |md5sum|cut -c 1-6

aee13f

#7、 basename 和 dirname

# basename:取出基名即文件名

[root@c43i08102.cloud.i09.amtest90 /etc/sysconfig/network-scripts]

#basename `pwd`

network-scripts

# dirname:取出目录名

[root@c43i08102.cloud.i09.amtest90 /etc/sysconfig/network-scripts]

#dirname `pwd`

/etc/sysconfig

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值