SHELL用法九(awk练习)

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 当前记录字段个数;
$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。

常用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行:

cat /etc/passwd|head -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组合实战,判断数字比较:

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

原文地址:https://www.cnblogs.com/nsh123/p/12158356.html

时间: 2024-10-10 14:01:28

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

2015年9月13日和15日【shell、sed&awk 的使用(一)】-JY1506402-19+liuhui880818

目录: 一.shell程序的运行原理 二.shell常用技巧 1.命令历史 2.命令别名 3.命令引用 4.文件名通配 5.常用快捷键 6.补全功能 7.输入输出重定向和管道 8.与用户交互命令 9.脚本的规范建立与执行 10.bash常用选项 11.命令状态结果 持续发现中... 三.常用知识点说明 1.变量 1)变量类型 2)本地变量 3)环境变量 4)特殊变量 2.条件测试 1)整数测试 2)字符串测试 3)文件测试 4)测试表达式 3.条件判断(选择执行) 4.脚本参数(位置参数变量)

shell三剑客之awk(包括sort排序和uniq工具)

shell三剑客之awk 在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互的情况下实现相当复杂的文本操作,被广泛应用于 Shell 脚本,完成各种自动化配置任务. awk 所使用的命令格式如下所示,其中,单引号加上大括号"{}"用于设置对数据进行的处理动作.awk 可以直接处理目标文件,也可以通过"-f"读取脚本对目标文件进行处理. awk工具

CreateObject(&quot;Wscript.Shell&quot;)用法

WScript.Shell是WshShell对象的ProgID,创建WshShell对象可以运行程序.操作注册表.创建快捷方式.访问系统文件夹.管理环境变量. 该对象有一个run方法. Run 方法创建一个新的进程,该进程以 intWindowStyle 窗口样式执行 strCommand. 语法 WshShell.Run (strCommand, [intWindowStyle], [blnWaitOnReturn]) 参数 strCommand 在 strCommand 参数内部的环境变量被

typeset shell 用法

typeset用于设置变量属性,如大小写,宽度,左右对齐等都可以用typeset来控制, 当用typeset改变一个变量的属性时,这种改变是永久的,下面以ksh为例,演示typeset的几种典型用法 1,无选项的执行typeset,则显示所有变量/home/lee#typesettypeset COLORStypeset -x COLORTERMtypeset -x DISPLAYtypeset -x GDMSESSIONtypeset -x GNOME_DESKTOP_SESSION_IDty

shell脚本之awk基本用法

脚本文件: [email protected]:/study/shell# cat awk_test.sh #!/bin/sh awk_test_fun() { echo "\$0:" echo $0 echo "\$1:" echo $1 echo "\$2:" echo $2 echo "\$3:" echo $3 echo "awk_test.txt content:" cat awk_test.tx

shell学习笔记—— awk用法

shell编程之awk

GNU awk AWK:Aho,Weinberger,Kernighan GNU awk --> gawk#ll `which awk`    /usr/bin/awk -> gawk 报表生成器,格式化文本输出; #man awk    pattern scanning and processing language.    模式扫描和处理语言;    基本用法:    awk [option] 'program' file        program: PATTERN{ACTION ST

shell以及sed awk总结

1.描述shell程序的运行原理(可附带必要的图形说明): 什么是shell Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称. shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层.当从shell或其他程序向Linux传递命令时,内核会做出相应的反应. shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调

shell脚本之awk工具的使用

在Linux系统中,awk是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或过滤处理,可以在无交互的情况下实现相当复杂的文本操作,被我们运维人员广泛应用于shell脚本,完成各中自动化配置任务. awk可以直接处理目标文件,也可以和sed命令一样通过"-f"选项读取脚本对目标文件进行处理. awk的语法格式如下: sed命令常用于整行处理,而awk比较倾向于将一行分成多个字段,awk可以使用逻辑操作符"&&