awk扩展应用 windows传输文件注意事项

第1章 awk扩展命令

awk 是一门语言 单行脚本 一般用来统计计算
语法是 awk 参数 ‘模式 条件 {动作}’

image.png

条件:

  1. 比大小 < > == != 等符号

  2. 正则 某一列的什么字符 n!~/匹配内容/

  3. 范围条件 2~/匹配内容/ 第二列的xx到xx的信息

动作: print 显示 打印

gsub 修改内容

模式:

BEGIN : 在awk之前执行什么操作

常用于计算

END : 在awk执行之后执行什么操作 常用于显示最后的内容

内置变量:OFS=xx OFS定义等于什么 显示内容列之间分隔符就是什么

awk 执行原理

awk 读取文件之前

命令行参数 -F/-v

BEGIN{}模块

awk 读取文件

读取1行 进行判断

满足:执行对应的动作

不足满足:继续下一行

awk 读取文件之后

执行END{}显示结果

练习题:

将第一行当道最后一行显示 最后一行到第一行

awk -F: '{ n=$1; $1=$NF; $NF=n; }1' /etc/passwd

思路 将$1的值放到一个临时变量(容器)中 再将最后一行放到空的$1中 再把变量中的值给空的$NF就完成了调换 输出即可

awk判断

格式:

if (条件) 命令 # 单分枝

if (条件)else 命令 # 多分枝

例子

 free -m |awk 'NR==2{if($NF<=5000) print "you server is down"}

you server is down # 判断剩余内存小于5000 报警

awk for循环

格式

for (i=0;i<=10;i++) 命令;

例子

 [root@m01 /server/files]# awk 'BEGIN{for(i=1;i<=100;i++) sum+=i; print sum}’

  计算1-100的和值

第2章 awk数组

image.png

2.1 赋值数组格式

awk ‘BEGIN { ip[0]=“10.0.0.1“ ; ip[1]=”abc” ; print ip[0]; print ip[1]}’
awk数组在直接赋值时需要加上双引号 特别是英文

因为在awk中 英文字母会被当作是一个变量 所以我们用双引引起来代表字符串

2.2 循环显示数组值

awk 'BEGIN{ ip[0]="10.0.0.1"; ip[1]="10.0.0.2"; for (i in ip) print ip[i],i}'

10.0.0.1 0

10.0.0.2 1

2.3 awk 自动数组赋值

利用两个公式

  1. i[$列]++

  2. sum[$列]=sum+$列

i[ ]++ 去重计数

sum[ ]+=sum 去重求和

去重计数

例 统计nginx的access.log日志中 每个ip访问次数

awk ‘{ip[$1]++}END{for (i in ip) print ip[i],i }’ access.log

显示的好看一点

awk '{ip[$1]++}END{for (i in ip) print ip[i],i }' access.log | sort -n | column -t sort #排序 n排序 r倒序显示 k2 按二列来排序

记号公式套用即可

去重求和

例 :显示每个ip访问时以供使用的流量

 awk '{ip[$1]+=$9}END{for (i in ip)print ip[i],i}' access.log  

好看一点

   awk '{ip[$1]+=$9}END{for (i in ip)print ip[i],i}' access.log | sort -n | column -t

利用公式 ip[$1]+=$9 等同于 ip=ip+n

第3章 windows传输文件到linux注意事项

这里需要注意一点 日志或脚本在windows下打开编辑过后 需要利用用命令dos2unix 进行转义

因为在windows中换行符是 ^M 而在linux中换行为 \n 和 $

相互换行符不一致 容易造成脚本执行出现诡异错误 日志无法分析

linux换行符 :
image.png

windows换行符 :
image.png

使用命令 dos2unix转换

  [root@m01 ~]#**dos2unix** /server/scripts/123.txt

  dos2unix: converting file 123.txt to Unix format ...

你可能感兴趣的:(awk扩展应用 windows传输文件注意事项)