2020-03-09

2020-3-9 linux 基础命令

1.文件查找或命令查找 which whereis

[root@wangjc ~]# which ls
alias ls='ls --color=auto'
    /usr/bin/ls

[root@wangjc ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz



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

==whereis== #查找命令的绝对路径、帮助手册等

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

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

2.sort 对源文件排序

选项 ==-t== “:” 指定分隔符 默认是空格 ==-k== 选定列数

[root@wangjc ~]# sort -t ":" -k2 file.txt
d:1
f:11
c:2
b:3
a:4
e:5

[root@wangjc ~]# sort -t ":" -k1 file.txt
a:4
b:3
c:2
d:1
e:5
f:11

选项==-n== number 以阿拉伯数字排序

[root@wangjc ~]# sort -t ":" -k2 -n file.txt
d:1
c:2
b:3
a:4
e:5
f:11

选项 ==-r== 逆序排列

[root@wangjc ~]# sort -t ":" -k2 -n -r file.txt
f:11
e:5
a:4
b:3
c:2
d:1

#管道符 “|” 将左边命令的输出结果,教给管道右边命令的输入

例:

[root@wangjc ~]# cat >> file.txt < b:3
> c:2
> a:4
> e:5
> d:1
> f:11
> EOF
#将文件file2 源文件以冒号分列  并以第2列用阿拉伯数字排列
[root@wangjc ~]# sort -t ":" -k2   -n file2.txt
oldboy:0
oldguo:10
oldxu:20
oldli:30
#将文件file2 源文件以冒号分列  并以第2列用阿拉伯数字排列后 显示先3行
[root@wangjc ~]# sort -t ":" -k2   -n file2.txt|head -3
oldboy:0
oldguo:10
oldxu:20

3.uniq 去除重复 并统计出现几次(必须先排序先sort)

实现思路:先排序 后去重

选项 ==-c== 统计重复内容出现几次

例 :类似 查询日志 统计日志 并排列输出前3ip 访问的次数

[root@wangjc ~]# 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@wangjc ~]# 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 xx 取xx列

[root@wangjc ~]# echo "Im oldxu, is QQ 552408925" > oldboy.txt
[root@wangjc ~]# cat oldboy.txt 
Im oldxu, is QQ 552408925
筛选出 oldxu  和 552408925
[root@wangjc ~]# cut -d " " -f 2,5 oldboy.txt 
oldxu, 552408925

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

方法2:
[root@wangjc ~]# awk '{print $2,$5}'|sed "s#,# #g" oldboy.txt 
Im oldxu  is QQ 552408925

方法3:
[root@wangjc ~]# awk -F "," '{print $1,$2}' oldboy.txt |awk '{print $2,$5}'
oldxu 552408925


sed 命令 ==重要==

用法 sed “s#xx#zz#g” 将源文件中的xx 换成zz

awk 命令 ==重要==

用法 awk ‘{print $xx}’ 源文件路径 将xx列的内容 打印(显示)出来

-F 指定分隔符

awk -F "x" ‘{print $xx}’

awd-F "[xx]" '{print $xx}' 选多个分隔符

高级用法

[ ,]+ +表示重复 前面的字符一次或多次
空格算一个分隔符
逗号算一个分隔符
空格和逗号挨在一起,也算一个分隔符
空格逗号空格,全算一个分隔符

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

5.wc 统计文件有多少行

选项 -l 统计文件行数

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