awk  'pattern +{action}' file

(1)AWK基本语法参数详解

a:单引号 ''是为了和shell命令区分开;

b:大括号{}表示一个命令分组;

c:pattern 是一个过滤器,表示匹配pattern条件的行才进行Action处理;

d:action是处理动作,常见动作为print;

e:使用#作为注释,pattern和action可以只有其一,但不能两者都没有。

FS 分隔符,默认是空格;

OFS 输出分隔符;

NR 当前行数,从1开始;

NF 当前记录字符个数;

$0 当前记录;

$1~$n 当前记录第n个字段(列);

(3)AWK内置函数详解:

gsub(r,s):在$0中用s代替r;

index(s,t):返回s中t的第一个位置;

length(s):s的长度;

match (s,r):s是否匹配r;

split(s,a,fs):在fs上将s分成序列a;

substr(s,p):返回s从p开始的子串;

(4)    AWK常用操作符,运算符及判断符:

++ --                           增加与减少( 前置或后置);

^ **                            指数( 右结合性);

! + -                            非、一元(unary) 加号、一元减号;

+ - * / %                      加、减、乘、除、余数;

<<= == != >>=                         数字比较;

&&  逻辑and;

||                                 逻辑or;

= += -= *= /= %= ^= **=           赋值。

(5)AWK与流程控制语句:

if(condition) { } else { };

while { };

do{ }while(condition);

for(init;condition;step){ };

break/continue

常用工具演练:

(1)           AWK打印硬盘设备名称,默认以空格为分割:

df -h|awk '{print $1}'

(2)           AWK以空格、冒号、\t、分号为分割:

awk -F'[:\t;]' '{print $1}' list.txt

(3)           AWK以冒号分割,打印第一列,同时将内容追加到/tmp/awk.log下:

awk -F: '{print $1>>"/tmp/awk.log"}' list.txt

(4)           打印list.txt文件中的第3行至第5行,NR表示打印行,$0表示文本所有域:

awk 'NR==3,NR==5  {print $0}'         list.txt

(5)           打印l;ist.txt文件中的第3行至第5行的第一列与最后一列:

awk 'NR==3,NR==5 {print $1,$NF}' list.txt

(6)           打印/etc/passwd文件中,长度大于80的行号:

awk   'length($0)>80 {print NR}'       /etc/passwd

(7)           AWK引用Shell变量,使用-v或者双引号+单引号即可:

awk -v STR=hello '{print STR,$NF}' list.txt

STR="hello";echo| awk  '{print "'${STR}'";}'

(8)           AWK以冒号切割,打印第一列同时只显示前5行:

cat /etc/passwd/head-5|awk -F: '{print $1}

awk -F: 'NR>=1&&NR<=5{print $1}'  /etc/passwd

(9)          Awk指定文件list.txt第一列的总和

cat    list.txt|awk '{sum+=$1}END{print $sum}'

(10)       AWK NR行号除以2余数为0则跳过该行,继续执行下一行,打印在屏幕:

                  awk  -F: 'NR%2==0 {next}{print NR,$1}' /etc/passwd

(11)       AWK添加自定义字符

ifconfig eth0|grep"Bcast"|awk'{print "ip_"$2}'

(12)       AWK与if组合实战,判断数字比较:

echo 3 2 1 | awk '{ if(($1>$2)||($1>$3)) { print $2} else {print $1} }'

(13)       AWK与数组组合实战,统计passwd文件用户数:

awk -F ':' 'BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name[i]}'  /etc/passwd

(14)       awk分析Nginx访问日志的状态码404、502等错误信息页面,统计次数大于20的IP地址。

awk '{if ($9~/502|499|500|503|404/) print $1,$9}' access.log|sort|uniq –c|sort –nr |awk '{if($1>20) print $2}'

(15)       Awk统计服务器状态连接数:

  netstat -an | awk '/tcp/ {s[$NF]++} END {for(a in s) {print a,s[a]}}'

                  netstat -an | awk '/tcp/ {print $NF}' | sort | uniq -c

获取IP地址:

ifconfig|awk '/cast/' |awk '{print $2}' |sed 's/add://g'

ifconfig|awk '/cast/'|awk '{print $2}' |awk -F: '{print $NF}'

显示用户名

awk -F: '{print $1}' passwd

打印第三行到第六行并显示行号

awk 'NR>=3&&NR<=6 {print NR,$0}' passwd

打印硬盘分区

df -h|awk 'NR>1 {print $NF,(NF-1)}'

awk  '{print $0}' list.txt'|sed 's/ /\n/g'|grep -v "^$"

数字列表取最大最小值

awk '{print $0}' list.txt|sed 's/ /\ng'|awk "! ^$"|sort -nr|sed -n "1p;\$p"

打印第一列和最后一列

df -h|awk '{print $1"\t"$NF}'

编程四剑客awk的更多相关文章

  1. shell 编程四剑客简介 find sed grep awk(微信公众号摘抄)

    一,Shell编程四剑客之Find 通过如上基础语法的学习,读者对Shell编程有了更近一步的理解,Shell编程不再是简单命令的堆积,而是演变成了各种特殊的语句.各种语法.编程工具.各种命令的集合. ...

  2. Shell编程四剑客包括:find、sed、grep、awk

    一.Shell编程四剑客之Find Find工具主要用于操作系统文件.目录的查找,其语法参数格式为: find path -option [ -print ] [ -exec -ok command ...

  3. 简单介绍shell编程四剑客之awk

    概要:分别的作用 grep:文本过滤(模式:pattern)工具,grep,egrep,fgrep,擅长过滤. sed:stream editor 文本编辑工具:(流编辑器),擅长取行.替换. awk ...

  4. 简单介绍shell编程四剑客之grep

    概要:分别的作用 grep:文本过滤(模式:pattern)工具,grep,egrep,fgrep,擅长过滤. sed:stream editor 文本编辑工具:(流编辑器),擅长取行.替换. awk ...

  5. 简单介绍shell编程四剑客之sed

    概要:分别的作用 grep:文本过滤(模式:pattern)工具,grep,egrep,fgrep,擅长过滤. sed:stream editor 文本编辑工具:(流编辑器),擅长取行.替换. awk ...

  6. 编程四剑客sed-2019.2.20

    sed    [-Options]     [‘Commands’]    filename; sed工具默认处理文本,文本内容输出屏幕已经修改,但是文件内容其实没有修改,需要加-i参数即对文件彻底修 ...

  7. linux四剑客-grep/find/sed/awk/详解-技术流ken

    四剑客简介 相信接触过linux的大家应该都学过或者听过四剑客,即sed,grep,find,awk,有人对其望而生畏,有人对其爱不释手.参数太多,变化形式太多,使用超级灵活,让一部分人难以适从继而望 ...

  8. Linux 命令之 linux 四剑客

    Linux命令-- 四剑客 一:Linux命令 之 AWK 符号:^ 开头 $ 结尾 awk 是一种处理文本的语言,一个强大的文本分析命令! 1:提取文件中的每行的第二个 提取前文本中内容为  命令: ...

  9. python 函数“四剑客”的使用和介绍

    python函数四剑客:lambda.map.filter和reduce. 一.lambda(匿名函数) 1. 学习lambda要注意一下几点: lambda语句被用来创建新的函数对象,并且在运行的时 ...

随机推荐

  1. 电商系统架构总结3(webapi授权机制)

    三 Web API 授权方式 web api的客户端,包括 android,ios,h5,自然对访问权限要加上授权机制.对于h5,要求把h5站点和web api部署在同一个域名下,然后对web api ...

  2. Redis 简介(官方翻译)

    Redis是一个开源(基于BSD开源协议).内存型结构数据存储,可当做数据库.缓存.消息代理.它支持的数据结构有字符串.哈希表.列表.集合.可随机查询的有序集合.位图.基数统计.用于半径查询的地理位置 ...

  3. 第一次调用从server获取Cookie

    System.setProperty("javax.net.ssl.trustStore", certPath); public String getCookieString(St ...

  4. atom编辑器适用

    因为要在多平台下适用node,同事推荐atom.所以下载了进行试用. 1.下载 https://atom.io/

  5. ORACLE ROWNUM解析[转]

    一.对rownum的说明 关于Oracle 的 rownum 问题,很多资料都说不支持SQL语句中的“>.>=.=.between...and”运算符,只能用如下运算符号“<.< ...

  6. java.lang.ClassNotFoundException: org.thymeleaf.spring5.view.ThymeleafViewRe。。。。。。。。。。。

    直接上代码问题: java.lang.IllegalStateException: Failed to introspect Class [org.springframework.boot.autoc ...

  7. 重识linux-常见压缩和解压缩命令

    重识linux-常见压缩和解压缩命令 1 compress 目前已经很少使用,知道有个  不重点学习 2 gzip和zcat 目前应用最广泛 gzip [-cdtv#] 文件名 zcat 文件名.gz ...

  8. python学习笔记_week24

    note 内容回顾: Model - 数据库操作 on_delete Query_set select_related 跨表数据一次性拿过来,不增加sql查询次数.帮助跨表,后面参数只能加连表字段 f ...

  9. <转载> 22种代码味道(Martin Fowler与Kent Beck) http://blog.csdn.net/lovelion/article/details/9301691

    Martin Fowler在Refactoring: Improving the Design of Existing Code(中译名:<重构——改善既有代码的设计>)一书中与Kent ...

  10. Intorduction of Annotation ,about examples in Hello1.java

    java ee 里的常用注解 .@Controller,@Service,@Repository,@Component,@RestController这几个注解用于实例化class对象.分别对应于控制 ...