AWK

2018-11-13  本文已影响0人  空语

1.基本用法

  awk 动作  文件

  awk  '{print $0}'  demo.txt

demo.txt 为需要处理的文件 动作为需要执行的语句或命令
0 表示 demo.txt 中整行的内容 awk 会将每行的内容切割 分隔符默认为空格或制表符(tab) 使用+数字 表示 分别表示为 $1, $2, $3

$ echo  “this is php” | awk '{print $1}' 
this

$ echo  “this is php” | awk '{print $3}' 
php

也可自定义分隔符 使用 -F 参数

$ echo "is:11" |awk -F ":" '{print $1}'

使用 /etc/passwd 文件为例

$ cp /etc/passwd  test.log    //copy到当前目录分析
$ awk -F ":" '{print $3}' test.log
/var/db/findmydevice
/var/db/datadetectors
/var/empty
/var/empty
/var/db/applepay
/var/db/hidd
/var/db/cmiodalassistants
/var/db/analyticsd
/var/db/fpsd
/var/db/timed
/var/db/reportmemoryexception

2.使用匹配

awk '正则表达式 {shell语句}' 文件

$ awk -F ":" '\_a\  {print $0}' test.log

3.使用IF

$ awk -F ":" '{if($1 > 3) print $1;else print "not this"}'  test.log

4.判断

awk '条件 动作' 文件名
$ awk '$1 > 3 {print $1}' t.log
$ awk '$1 >3 || $2 < 100 {print $0}' t.log 

5.动作分块

awk 'BEGIN{动作1} {动作2} END{动作3}' 文件
动作1 在处理所有行前执行 执行一次
动作2 每行执行一次
动作3 当处理完所有行后 最后执行 执行一次

//统计行数
awk 'BEGIN{i=0} {i++} END{print "all  count  is",i}' t.log
上一篇下一篇

猜你喜欢

热点阅读