学习Linux运维的个人笔记:基础命令的应用(八)

一、文件或命令查找(which、whereis)

  • 输入脚本时,碰到环境不同,使用相对路径执行会报错,可以使用绝对路径
  • which+命令=查找命令的绝对路径
which ls
alias ls='ls --color=auto'
	/usr/bin/ls
  • whereis+命令=查找命令的路径、帮助手册等
whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
  • whereis -b +命令=仅显示命令所在的路径
 whereis -b ls
ls: /usr/bin/ls
  • type -a+命令=查看命令的绝对路径(包括别名)
type -a ls
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls

二、排序命令

  • sort+选项+文件路径=对文件进行排序
    选项:-r :倒序
    -n :按数字排序
    -t :指定分隔符(默认空格)
    -k :指定第几列,指定几列几字符
  • 例:将下列IP地址排序
cat ip.txt
192.168.3.1 00:0F:AF:81:19:1F
192.168.3.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.2.20 00:0F:AF:85:55:DE
192.168.2.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.0.151 00:0F:AF:85:6C:F6
192.168.0.152 00:0F:AF:83:1F:65
192.168.0.153 00:0F:AF:85:70:03
192.168.1.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.1.12 00:30:15:A2:3A:A1
192.168.1.1 00:0F:AF:81:19:1F
192.168.2.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.2.20 00:0F:AF:85:55:DE
192.168.1.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.0.151 00:0F:AF:85:6C:F6
192.168.1.152 00:0F:AF:83:1F:65
192.168.0.153 00:0F:AF:85:70:03
192.168.3.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.3.12 00:30:15:A2:3A:A1
sort -t '.' -k3.1,3.1 -k4.1,4.3 ip.txt -n    #排序命令
192.168.0.151 00:0F:AF:85:6C:F6
192.168.0.151 00:0F:AF:85:6C:F6
192.168.0.152 00:0F:AF:83:1F:65
192.168.0.153 00:0F:AF:85:70:03
192.168.0.153 00:0F:AF:85:70:03
192.168.1.1 00:0F:AF:81:19:1F
192.168.1.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.1.11 00:30:15:A3:23:B7
192.168.1.12 00:30:15:A2:3A:A1
192.168.1.21 00:0F:AF:85:6C:09
192.168.1.152 00:0F:AF:83:1F:65
192.168.2.2 00:0F:AF:85:6C:25
192.168.2.20 00:0F:AF:85:55:DE
192.168.2.20 00:0F:AF:85:55:DE
192.168.2.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.2.22 00:0F:AF:85:5C:41
192.168.3.1 00:0F:AF:81:19:1F
192.168.3.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.3.3 00:0F:AF:85:70:42
192.168.3.10 00:30:15:A2:3B:B6
192.168.3.12 00:30:15:A2:3A:A1

三、去重,统计命令

  • 排序输出的结果+|+uniq=去重
    排序输出的结果+|+uniq+选项=统计出现次数
    (必须先排序!!!)
    "|"为将前者输出的命令变为后者输入的命令
  • 例:统计如下日志,打印出访问最高的前3的IP
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
sort ip2.txt |uniq -c |sort -nr |head -3   #排序后统计次数,然后将次数排序倒序取前3
      7 192.168.0.151
      5 192.168.2.22
      2 192.168.3.3

每个命令能做的事情都很单一,所以需要使用管道技术(|)将命令与命令之间衔接起来,这样能做的事情是无线的

三、处理字符列的命令

1.cut用法
  • cut+选项+文件路径=过滤列的结果
    选项:-d :指定分隔符
    -f :数字,取第几列(-f3,6:第三列和第六列)
    -c :按字符取(空格也算)
  • 例:取下面话语中的名字和qq号。
cat file1.txt
Im xzl, is QQ 779115590
cut -d ' ' -f 2,5 file1.txt
xzl, 779115590
2.sed用法
  • 输出结果+|+sed ‘s#+将要被替换的字符+#+新字符+#g’= 替换成功
  • 例:去掉上一个例子结果的逗号
cut -d ' ' -f 2,5 file1.txt
xzl, 779115590
cut -d ' ' -f 2,5 file1.txt |sed 's#,##g'
xzl 779115590
3.awk处理
  • awk+选项+’{print+$列数}’+文件路径=提取成功
    选项:-F :指定分隔符
  • 例:取下面话语中的名字和qq号,并且去掉逗号。
cat file1.txt
Im xzl, is QQ 779115590
awk '{print $2,$5}' file1.txt |sed 's#,##g'
xzl 779115590
#或者
awk -F '[ ,]+' '{print $2,$5}' file1.txt 
xzl 779115590
#+表示重复	前面的字符一次或多次   
#空格算一个分隔符
#逗号算一个分隔符
#空格和逗号挨在一起,也算一个分隔符
#空格逗号空格,全算一个分隔符
5.wc显示文件信息
  • wc+选项+文件路径=文件信息
    选项:-l :显示文件行数
    -c :显示文件字节
    -w :显示文件单词
  • 例:显示"/etc/passwd"有多少行
wc -l /etc/passwd
21 /etc/passwd
发布了34 篇原创文章 · 获赞 10 · 访问量 2329

猜你喜欢

转载自blog.csdn.net/weixin_44903608/article/details/104754615