文件描述符和正则表达式

2019-08-05  本文已影响0人  zxhChex

0 标准输入
1 标准输出
2 错误输出
3 - $(ulimit -n)
command <&n 把文件描述符n作为输入
command >&n 输出重定向到文件描述符n
exec n<&- 关闭文件描述符

正则表达式 (regular expression, RE)

一种工具,所有的编程语言都支持正则

[:alnum:] 0-9 A-Z a-z
[:alpha:] A-Z a-z
[:lower:] a-z
[:upper:] A-Z
[:digit:] 0-9

grep 查询 可查看多个文件 查找每个要找的字符串
-v 取反(行) -n 显示行号
^word 以word为开头
word以word为结尾 '^'空白行
. 表示一定有一个且仅有一个
\ 跳脱字符,将特殊符号的特殊意义去除

[] 仅表示其中一个字符
[^ ] 取反
{ n,m } 连续n到m个的 表示数量(前一个字符)出现的次数

grep -o 只显示匹配的字符串
-n 显示在文件中的行数
-c 统计数量(行)
-B 2 前两行 -A 3 后三行
显示目标行的前后各 3 行
-C 3 前后三行
-l 只要文件名
-r 递归查找


图片.png
图片.png
图片.png

扩展正则
egrep / grep -E

shell运行
bash 开启子进程运行
直接用路径执行文件 子进程
source或者 . 直接放到父进程进行,参数保留

默认变量
# 所有位置变量的个数@ 所有位置变量
0 程序本身1 位置变量1

统计访问IP次数:

awk '{a[$1]++}END{for(v in a)print v,a[v]}' access.log

统计访问访问大于100次的IP:

awk '{a[$1]++}END{for(v ina){if(a[v]>100)print v,a[v]}}' access.log

统计访问IP次数并排序取前10:

awk '{a[$1]++}END{for(v in a)print v,a[v]|"sort -k2 -nr |head -10"}' access.log

统计时间段访问最多的IP:

awk'4>="[02/Jan/2017:00:02:00" &&4<="[02/Jan/2017:00:03:00"{a[$1]++}END{for(v in a)print v,a[v]}'access.log

统计上一分钟访问量:

date=$(date -d '-1 minute'+%d/%d/%Y:%H:%M)

awk -vdate=date '4~date{c++}END{printc}' access.log

统计访问最多的10个页面:

awk '{a[$7]++}END{for(vin a)print v,a[v]|"sort -k1 -nr|head -n10"}' access.log

统计每个URL数量和返回内容总大小:

awk '{a[7]++;size[7]+=$10}END{for(v ina)print a[v],v,size[v]}' access.log

统计每个IP访问状态码数量:

awk '{a[1" "9]++}END{for(v ina)print v,a[v]}' access.log

统计访问IP是404状态次数:

awk '{if(9~/404/)a[1" "$9]++}END{for(i in a)print v,a[v]}' access.log

上一篇 下一篇

猜你喜欢

热点阅读