1、SHELL编程Awk语句案例实战
Awk主要是用于对文本文件进行处理,通常是逐行处理,其语法参数格式为,
AWK常用参数、变量、函数详解如下:
awk  'pattern + {action}' file
(1) AWK基本语法参数详解:
单引号''是为了和shell命令区分开;
大括号{ }表示一个命令分组;
pattern是一个过滤器,表示匹配pattern条件的行才进行Action处理;
action是处理动作,常见动作为Print;
使用#作为注释,pattern和action可以只有其一,但不能两者都没有。
(2) AWK内置变量详解:
FS 分隔符,默认是空格;
OFS 输出分隔符;
NR 当前行数,从1开始;
NF 当前记录字段个数;
$ 当前记录;
$~$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。
常用AWK工具企业演练案列:
(1) AWK打印硬盘设备名称,默认以空格为分割:
df -h|awk '{print $1}'
(2) AWK以空格、冒号、\t、分号为分割:
awk -F '[ :\t;]' '{print $1}'   jfedu.txt
(3) AWK以冒号分割,打印第一列,同时将内容追加到/tmp/awk.log下:
awk -F: '{print $1 >>"/tmp/awk.log"}' jfedu.txt
(4) 打印jfedu.txt文件中的第3行至第5行,NR表示打印行,$0表示文本所有域:
awk 'NR==3,NR==5 {print}'  jfedu.txt
awk 'NR==3,NR==5 {print $0}' jfedu.txt
(5) 打印jfedu.txt文件中的第3行至第5行的第一列与最后一列:
awk 'NR==3,NR==5 {print $1,$NF}'  jfedu.txt
(6) 打印jfedu.txt文件中,长度大于80的行号:
awk 'length($0)>80 {print NR}'  jfedu.txt
(7) AWK引用Shell变量,使用-v或者双引号+单引号即可:
awk -v STR=hello '{print STR,$NF}'  jfedu.txt
STR="hello";echo| awk '{print "'${STR}'";}'

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

|awk -F: '{print $1}'
awk -F: 'NR>=1&&NR<=5 {print $1}' /etc/passwd
(9) Awk指定文件jfedu.txt第一列的总和:
cat jfedu.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组合实战,判断数字比较:
   | 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

SHELL用法九(awk练习)的更多相关文章

  1. shell编程之awk命令详解

    shell编程之awk命令详解 a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; out ...

  2. Linux编程 9 (shell类型,shell父子关系,子shell用法)

    一. shell类型 1.1  交互式 bin/ shell程序 当用户登录到某个虚拟控制台终端或是在GUI中启动终端仿真器时,默认的shell程序就会开始运行.系统启动什么样的shell程序取决于你 ...

  3. 转shell中的awk用法详解

        awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作,完整的awk脚本通常用来格式化文本文件中的信息 调用awk:   第一种,命令行方式 ...

  4. shell 强大的awk

    from here 小用法,使用awk来对文件随机抽取n行 awk 'BEGIN{srand()} {print rand()"\t"$0}' input_file | sort ...

  5. shell编程之awk

    awk是一种用于处理数据和生成报告的编程语言 awk可以在命令行中进行一些简单的操作,也可以被写成脚本来处理较大的应用问题 awk与grep.sed结合使用,将使shell编程更加容易 awk工作模式 ...

  6. shell语句记录-awk

    cat ./daily_uv/daily_uv_20140104 | awk '{fr[$1]+=$3; k=$1 "_" $2; av[k]+=$3;} END{for (k i ...

  7. scrapy shell 用法(慢慢更新...)

    scrapy shell 命令 1.scrapy shell url #url指你所需要爬的网址 2.有些网址数据的爬取需要user-agent,scrapy shell中可以直接添加头文件, 第①种 ...

  8. 【shell入门】Shell用法

    参考:http://www.cnblogs.com/Lynn-Zhang/p/5758287.html 1.sh/bash/csh/Tcsh/ksh/pdksh等shell的区别 sh(全称 Bour ...

  9. hive的shell用法(脑子糊涂了,对着脚本第一行是 #!/bin/sh 疯狂执行hive -f 结果报错)

    hive脚本的执行方式 hive脚本的执行方式大致有三种: hive控制台执行: hive -e "SQL"执行: hive -f SQL文件执行:参考hive用法: usage: ...

随机推荐

  1. JavaScript—暂告,小节

    Javastript 的学习告一段落了.虽然还有更多的:爬虫 什么的    但是和我在学校的相比 要扎实许多.知道了兼容性 面向对象,闭包.....一些细节的用法. 虽然以后可能很少用到.可是我觉得 ...

  2. 89.QuerySet API常用方法使用详解:count,first,last,aggregate,exists

    1.count():计算数据的个数. 计算数据的个数可以使用count,在python中使用len()也可以计算数据的个数,但是相对来说效率没有使用count()效率高,因为在底层是使用select ...

  3. html属性,上传图片选择时只显示图片文件

    这个实现比较简单,就是用到accept属性: 注意这里我们对这个file元素进行了隐藏,因为它默认呈现是下面这个样子的,并不好看. <div style="display:none;& ...

  4. Linux-进程关系

    (1).无关系 (2).父子进程关系 (3).进程组(group):由若干个进程构成一个进程组 (4).会话(session):由若干个进程组构成一个会话

  5. 如何优雅的设计APP页面?

    页面框架设计只是整个产品设计中的一环,不要把眼界局限在这一环,也不要只站需求.只站在交互.只站在视觉上思考问题,从多个角度看问题,你才会学会成长. 产品设计是一个系统工程,单独拧出来其中一个流程来讲, ...

  6. Activity组件(三):通过对象实现信息添加及展示

    在对组件进行注册时,只注册了EditText,却忘记了Button,导致程序一直闪退 输入信息 点击添加 成功跳转页面,并将数据传递 User.java package com.example.reg ...

  7. iOS 中UITableView的深理解

    例如下图:首先分析一下需求:1.根据模型的不同状态显示不同高度的cell,和cell的UI界面. 2.点击cell的取消按钮时,对应的cell首先要把取消按钮隐藏掉,然后改变cell的高度. 根据需求 ...

  8. 内网部署Docker版本Gitlab

    Gitlab部署: 1. 还原备份文件后记得拷贝gitlab-secrets.json,不然会遇到500错误 2. 下载Docker以及依赖项rpm包 3. 在外网机器下载镜像 a. 拉取——Dock ...

  9. Android如何制作自己的依赖库上传至github供别人下载使用

    Android如何制作自己的依赖库上传至github供别人下载使用 https://blog.csdn.net/xuchao_blog/article/details/62893851

  10. windows下pip的安装

    安装地址:https://pypi.python.org/pypi/pip#downloads 下载完成后,找到文件并进行解压,找到下面路径. 打开cmd,cd到当前目录下,然后执行下面命令: pyt ...