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