Linux三剑客实战

环境

  • windows git bash
  • mac iterm term
  • 用自己的帐号登录 ssh 手机号码后8位@shell.testing-studio.com
  • 没有账号的可以临时用 ssh hogwarts2019@shell.testing-studio.com
  • /tmp/nginx.log 保存了一份一天的nginx访问log

Linux三剑客介绍

Grep

ps -ef  | grep bashecho "ABC" | grep -i  abcps -ef | grep bash | grep -v grepecho "1234 7654" | grep -o "[0-9]4"  echo "1234 7654" | grep -oE "[0-9]4|76"

测试题

  • 找出nginx.log中所有404和503报错的log数据,取出前3条数据,把命令贴到回复里
  • 找出testerhome首页的所有http和https的链接

awk

ps | awk 'BEGIN{print "start"}{print $0}END{print "end"}'awk '/ 404 | 500 /' /tmp/nginx.logecho '12345' | awk '/2/,/4/'echo '12345' | awk '$0>3'ps | awk 'NR>1'ps | awk '{print $NF}'echo $PATH | awk 'BEGIN{RS=":"}{print $0}' | grep -v "^$" | awk 'BEGIN{FS="\n";ORS=":"}{print $0}END{printf "\n" }'echo '1,102,203,30' | awk 'BEGIN{a=0;FS=","}{a+=$2}END{print a,a/NR}'awk 'BEGIN{print 33*20*76/200/3}'echo "123|456_789" | awk 'BEGIN{FS="\\||_"}{print $2}'echo "123|456_789" | awk "BEGIN{FS=\"\\\\||_\"}{print \$2}" #尽量使用单引号

测试题

  • 找出404和500的数据,只打印状态码这一列,然后排序去重。把命令贴到回复里
  • 去testerhome首页找到所有的http的连接,然后打印不带http的纯域名部分

sed

pattern表达式

  • 20 30,35 行数与行数范围
  • /pattern/ 正则匹配
  • //,// 正则匹配的区间

action

  • d 删除
  • p 打印,通畅结合-n参数
  • s/REGEXP/REPLACEMENT/[FLAGS]
  • 替换时引用 \1 \2 匹配的字段
ps | sed -n 1,3pps | sed 's/CMD/command/'ps | sed -n '/ps/p'echo '12345' | sed -n '/3/,/4/p'echo '12345' | sed '/3/,/4/d'ps | sed -e 's/CMD/command/' -e 's#00#20#g'

测试题

  • 对所有404 500 的数据,统计出现这种状态码的url,需要对url汇总(汇总相似的url,把相同的资源但是变化的id去掉)去重,打印前5个出问题的路径,把命令贴到回复里

演练

↙↙↙阅读原文可查看相关链接,并与作者交流