Linux 三剑客介绍
grep
grep 示例 Shell 脚本代码
ps -ef | grep bash
echo "ABC" | grep -i abc
ps -ef | grep bash | grep -v grep
echo "1234 7654" | grep -o "[0-9]4"
echo "1234 7654" | grep -oE "[0-9]4|76"
grep 实战演练题目
awk 示例 Shell 脚本代码
ps | awk 'BEGIN{print "start"}{print $0}END{print "end"}'
awk '/ 404 | 500 /' /tmp/nginx.log
echo '1
2
3
4
5' | awk '/2/,/4/'
echo '1
2
3
4
5' | 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,10
2,20
3,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}" #尽量使用单引号
awk 实战演练题目
pattern表达式
- 20 30,35 行数与行数范围
- /pattern/ 正则匹配
- //,// 正则匹配的区间
action
- d 删除
- p 打印,通畅结合-n参数
- s/REGEXP/REPLACEMENT/[FLAGS]
- 替换时引用 \1 \2 匹配的字段
sed 示例 Shell 脚本代码
ps | sed -n 1,3p
ps | sed 's/CMD/command/'
ps | sed -n '/ps/p'
echo '1
2
3
4
5' | sed -n '/3/,/4/p'
echo '1
2
3
4
5' | sed '/3/,/4/d'
ps | sed -e 's/CMD/command/' -e 's#00#20#g'
sed 实战演练题目
- 对所有404 500 的数据,统计出现这种状态码的url,需要对url汇总(汇总相似的url,把相同的资源但是变化的id去掉)去重,打印前5个出问题的路径,把命令贴到回复里。