awk基础

1工作模式:
以空白为分隔符 分为一个一个字段
读取一行 执行命令
在 awk grep sed中的命令不要用双引号 用单引号

2 指定分隔符
awk -F'[: ]+' '{print $1}'
-F 用于指定分隔符
[: ] 以冒号或空格为分隔符
+ 表示一个或多个 连续的多个冒号(空格)当作一个来处理
'{print $1}' 打印出第一个字段

3 内置变量NF
cat file | awk '{print $NF}'
NF awk的内置变量 每一行的字段数
{print $NF} 打印出最后一个字段
4 内置变量NR
cat file | awk 'NR>1&&NR<4{print $0}'
NR number of recording 行数
NR>1&&NR<4 将第2 行 和第3行打印出来

5执行模式
awk 'patten1 {action1}'
如果patten1为真 则执行action1
当patten1为空时,默认为真
cat file | awk 'NR>1&&NR<4{print $0}'
如果条件 NR>1&&NR<4为真 则执行动作 {print $0}

6 BEGIN 和 END
cat file | awk 'BEGIN{pring "=====begin===="}{pring $0}END{print -----Tail-----}'
在处理第一行之前 先执行BEGIN的动作 一般用于变量赋值
在处理完整个file之后 执行END的动作

7相关计算方法
cat file | awk '{print $0,($3+$4)/2}'
增加了一列 ($3+$4)/2第3个数和第4个数的和的平均值
cat file | awk '{a=$3+$4;print $0,a/2}'
可以使用变量 a

cat file|awk '{a+=$1}END{print a}'
a+=$1 第一列的值相加
如果变量和数相加,那么a的初始值默认为0
ps aux |grep /firfox |awk '{a+=$3}END{print a}'
pa aux的第3列表示cpu的占用比
统计出firfox的占用浏览量比

8 awk中的if
ll | awk '/^-/{if($5>1024)print $0}'
/^-/ 过滤出所有的文件
ll 结果的第5列是文件大小 $5
if($5>1024)print $0 如果文件大于1k,则打印出该文件行

9 awk的变量介绍
-v 将外部值赋值给awk变量
cat file|awk -va=2 '{print a}'

10 for循环
cat file|awk '{for(i=1,i<=NF;i++){print $i}'

11 正则表达式
cat file|awk '/reg/{action}'
cat file|awk '/^a/{print $0}'
/^a/ 符合以a开头的行 执行后面的action
cat file|awk '$2~/456/{print $0}'
$2~/456/ 第二列中匹配到456
cat file|awk '/^1/&&$2~/456/{print $0}'
/^1/&&$2~/456/ &&连接两个正则表达式

12 读取多个文件的列 拼接
cat file1 | awk '{print $1}' >a file1的第一列存入一个文件中
cat file2 | awk '{print $1}' >b file2的第一列存入一个文件中
paste a b|tr '\t' ' ' 将a b拼接

13 awk的统计
file 中有多少个字段
cat file|awk '{for(i=1;i<=NF;i++){n++}END{print n}}'

14 对列的操作
取某一行
df -h | awk -F'[\t %]+' '{/\/dev\/sda5/{print$5}}'
列累加
df -h | awk -F'[\t %]+' '{a=a+$5}END{print a}'

15 删除文件后四行

cat file | awk 'NR==FNR{a++}NR!=FNR{if(FNR<=a-4)print $0}' file file
读两遍文件
file file
读第一遍file时统计出行数
NR==FNR {a++} 统计行数
读第二遍file时输出前六行
NR!=FNR{if(FNR<=a-4)print $0}

另一种方法 用head命令
cat file|head -n -4

16 print $0可以省略
awk '1' 相当于awk '1{print $0}'

统计cpu 和 内存
ps aux|awk '/\/bin/{a+=$3;b+=$4}END{print"CPU:"a "MEM:"b}'

posted @ 2018-05-17 16:05  ZECDLLG  阅读(156)  评论(0编辑  收藏  举报