2020-03-09

容易混,记下来

1,命令查找

# which ls      #查找ls命令的绝对路径

# whereis ls        #查找命令的路径、帮助手册、等

# whereis -b ls    #仅显示命令所在的路径

# type -a ls        #查看命令的绝对路径(包括别名)

2,sort 分类

选项 -r

倒序 -n,按数字排序 -t,指定分隔符(默认空格) -k,【指定第几列, 指定几列几字符(指定1,1 3.1,3.3)】

例如

cat >> file2.txt <

oldxu:20

oldguo:10

oldli:30

oldboy:0

EOF

[root@oldboy ~]# sort -t ":" -k2 -nr file2.txt  | head -3

oldli:30

oldxu:20

oldguo:10

3,uniq 去重

选项 -c

例如

( 排序 去重 统计 打印top3 = 排名前3 )

[root@oldboy ~]# cat >>ip2.txt<

192.168.3.1

192.168.3.2

192.168.3.3

192.168.2.20

192.168.2.21

192.168.2.22

192.168.0.151

192.168.0.151

192.168.0.152

192.168.0.153

192.168.0.151

192.168.2.22

192.168.1.10

192.168.1.11

192.168.1.12

192.168.0.151

192.168.1.1

192.168.2.2

192.168.0.151

192.168.3.3

192.168.2.20

192.168.1.21

192.168.0.151

192.168.2.22

192.168.0.151

192.168.2.22

192.168.1.152

192.168.0.153

192.168.3.10

192.168.1.11

192.168.2.22

192.168.3.12

EOF

[root@oldboy ~]# sort ip2.txt | uniq -c | sort -nr | head -3

      7 192.168.0.151

      5 192.168.2.22

      2 192.168.3.3

每个命令能做的事情都很单一,所以需要使用 管道技术  将命令与命令之间衔接起来,这样能做的事情就是无限的。#必须先排序(不排序相同的内容不再一起,无法去重)

4,cut  过滤

#选项:

-d 指定分隔符

-f 数字,取第几列  –f3,6三列和6列

-c 按字符取(空格也算)

1.产生文件

[root@oldboy ~]# echo "Im oldxu, is QQ 552408925" > oldboy.txt

2.需求:过滤出oldboy.txt文件里 oldxu以及552408925

3.如何实现:

实现方法1:

[root@oldboy ~]# cut -d " " -f 2,5 oldboy.txt

oldxu, 552408925

[root@oldboy ~]# cut -d " " -f 2,5 oldboy.txt  | sed 's#,##g'

oldxu 552408925

实现方法2:

[root@oldboy ~]# awk  '{print $2,$5}' oldboy.txt

oldxu, 552408925

[root@oldboy ~]# awk  '{print $2,$5}' oldboy.txt | sed 's#,##g'

oldxu 552408925

实现方法3: awk处理

[root@oldboy ~]# awk -F "," '{print $1,$2}' oldboy.txt  | awk '{print $2,$5}'

oldxu 552408925

[root@oldboy ~]# awk -F "[ ,]" '{print $2,$6}' oldboy.txt

oldxu 552408925

高级用法

[ ,]+  +表示重复 前面的字符一次或多次 

空格算一个分隔符

逗号算一个分隔符

空格和逗号挨在一起,也算一个分隔符

空格逗号空格,全算一个分隔符

[root@oldboy ~]# awk -F "[ ,]+" '{print $2,$5}' oldboy.txt

oldxu 552408925

5,wc 

#选项:

-l显示文件行数

-c显示文件字节

-w显示文件单词

方法1:统计一个文件有多少行,使用wc -l

[root@oldboy ~]# wc -l /etc/services

11176 /etc/services

方法2:

[root@oldboy ~]# cat -n /etc/services  | tail -1 | awk '{print $1}'

11176

方法3:

[root@oldboy ~]# grep -n ".*" /etc/services | tail -1 | awk -F ":" '{print $1}'

11176

grep cut awk 都是过滤文件或目录的内容,后面所跟选项不同,注意区分,cut 不常用。

你可能感兴趣的:(2020-03-09)