linux awk入门,awk入门应用

awk概述

awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。awk分别代表其作者姓氏的第一个字母。因为它的作者是三个人,分别是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的GNU版本,它提供了Bell实验室和GNU的一些扩展。下面介绍的awk是以GUN的gawk为例的,在linux系统中已把awk链接到gawk,所以下面全部以awk进行介绍。

使用语法

awk [ -F Ere ] [ -v Assignment ] … { -f ProgramFile | 'Program' } [ [ File … | Assignment … ] ] …

常用命令选项

-F fs or --field-separator fs

指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。

-v var=value or --asign var=value

赋值一个用户定义变量。

-f scripfile or --file scriptfile

从脚本文件中读取awk命令。

相关输出命令

print item1,item2,…

要点:

逗号作为item的分隔符

输出的item可是字符串,也可以是数值:当前记录的字段、变量或awk的表达式

如省略item,相当于print $0

printf FORMAT,item1,item2,….

要点:

FORMAT是必须要给出的

不会自动换行,需要显示给出换行控制符 \n

FORMAT中需要分别为后面的每个item指定一个格式化符号

相关格式符

格式符

描述

%c

显示字符的ASCII码

%d,%i

显示十进制整数

%e,%E

科学计数法数值显示

%f

显示为浮点数

%g,%G

以科学计数法或浮点形式显示数值

%s

显示字符串

%u

无符号整数

%%

显示%自身

相关修饰符

修饰符

描述

m[.n]

m表示控制显示的宽度,默认右对齐;n表示小数点后的精度

左对齐

+

显示数值的符号

相关内建变量

变量名

描述

FS

input field seperator ,指定输入分隔符,默认为空白字符

OFS

output field seperator,指定输出分隔符,默认为空白字符

RS

input record seperator,指定输入行分隔符

ORS

output record seperator,指定输出行分隔符

NF

number of field,字段数量

{print NF}

打印统计的字段数量

{print $NF}

打印每行的最后一字段

NR

number of record,行数

FNR

多文件统计,各文件分别计数,显示行数

FILENAME

当前文件名

ARGC

命令行参数的个数

ARGV

命令行中给定的各参数

相关内置函数

函数表达式

描述

rand()

返回0-1之间的随机数,小数

length([$])

返回指定字符串的长度

sub(r,s,[t])

以r表示的模式来查找t所表示的字符串中的匹配的内容,并将其第一次出现替换为s所表示的内容

gsub(r,s,[t])

以r表示的模式来查找t所表示的字符串中的匹配的内容,并将其所有出现全部替换为s所表示的内容

split(s,a[,r])

以r为分隔符切割字符s,并将切割后的结果保存在a所表示的数组中

相关操作符

运算符

描述

= += -= *= /= %= ^= **=

赋值

?:

C条件表达式

||

逻辑或

&&

逻辑与

~

匹配正则表达式

~!

不匹配正则表达式

< <= > >= != ==

关系运算符

空格

连接

+ –

加,减

* / &

乘,除与求余

+ – !

一元加,减和逻辑非

^ ***

求幂

++ –

增加或减少,作为前缀或后缀

$

字段引用

in

数组成员

相关模式

模式

描述

empty

空模式,匹配每一行

BEGIN{}

仅在开始处理文件中的文本之前执行一次

END{}

仅在文本处理完成之后执行一次

/regular expression/

仅处理能够被此处模式匹配到的行

relational expression

关系表达式,结果有"真"有"假",结果为"真"才会被处理,真:结果为非0值,非空字符串

line ranges

行范围,startline,endline:/pat1/,/pat2/或(NR>=startline&&NR<=endline)

相关控制语句及示例

if(condition) statements

找出系统上UID大于等于1000的用户,并将用户输出形式类似于“Conmon user: gwx”

awk -F: '{if ($3>=1000) printf "Common user: %s\n",$1}' /etc/passwd

找出系统上默认shell为/bin/bash的用户,并输出该用户的用户名

awk -F: '{if ($NF == "/bin/bash")print $1}' /etc/passwd

找出系统上默认shell为bash的用户,并输出该用户的用户名

awk -F: '{if ($NF~"bash$")print $1}' /etc/passwd

输出当前系统上fstab挂载的设备情况

awk  '{if ($1!="#")print $0}' /etc/fstab

输出当前系统使用比例超过80%的分区

df -h |awk -F% '/\/dev/{print $1}'|awk '{if ($NF>80)print $1}'

if(condition){statements} else {statements}

找出系统上UID大于等于1000的用户,并将用户输出形式类似于“Conmon user: gwx”,其余用户输出形式类似于“Sysuser:php”

awk -F: '{if ($3>=1000) {printf "Common user: %s\n",$1} else {printf "Sysuser: %s\n",$1}}' /etc/passwd

while (condition){statements}

输出当前系统/etc/grub2.cfg文件中以linux16开头的行的字符数大于等于7个的字段,并在字段的后面显示该字段的字符数

awk '/^[[:space:]]*linux16/{i=1;while (i<=NF){if (length($i)>=7){print $i,length($i)};i++}}' /etc/grub2.cfg

for(expr1;expr2;expr3){statements}

输出当前系统/etc/grub2.cfg文件中以linux16开头的行字段,并在字段的后面显示该字段的字符数

awk '/^[[:space:]]*linux16/{for (i=1;i<=NF;i++){print $i,length($i)}}' /etc/grub2.cfg

相关扩展 针对与使用awk统计网站访问相关

日志字段定义样例如下,如果日志文件做了轮替设置,请查看对应要统计的日志文件做统计分析

10.6.9.15 – – [12/Nov/2016:16:24:15 +0800] "GET / HTTP/1.1" 200 258 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36"

统计访问频次最高的5个ip

cat /var/log/httpd/access_log |awk '{print $1}'|sort|uniq -c|sort -nr|head -5

统计恶意ip

cat /var/log/httpd/access_log|awk '{if($9~/40/){print $1}}'|sort|uniq|sort -nr

找出访问最多的文件(下载类网站常用,这里以.exe扩展名举例)

cat /var/log/httpd/access_log|awk '($7 ~/.exe/){print $10 "" $1 "" $4""$7}' |sort -n |uniq -c |sort -nr |head -10

统计该网站的流量,统计结果以“G“”显示

cat /var/log/httpd/access_log|awk '{sum+=$10} END {print sum/1024/1024/1024"G"}'

查看日志中出现100次以上的IP

cat /var/log/httpd/access_log-20161113|cut -d ' ' -f 1 |sort |uniq -c | awk '{if ($1 > 100) print $0}'

查看某一IP在网站内都访问了哪些资源

cat /var/log/httpd/access_log-20161113| grep 10.6.9.15| awk '{print $1"\t"$7}' | sort | uniq -c | sort -nr | less

原创文章,作者:N24-wenxuan,如若转载,请注明出处:http://www.178linux.com/62423

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

const在c语言中作用,在C语言中const作用全面总结.doc

在C语言中const作用全面总结C中的const关键字的用法非常灵活&#xff0c;而使用const将大大改善程序的健壮性&#xff0c;本人根据各方面查到的资料进行总结如下&#xff0c;期望对朋友们有所帮助。Const 是C中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型&#…

龙贝格数值分析作业c语言,数值分析龙贝格实验报告.doc

数值分析龙贝格实验报告实验三 龙贝格方法【实验类型】 验证性【实验学时】 2学时【实验内容】1.理解龙贝格方法的基本思路2.用龙贝格方法设计算法&#xff0c;编程求解一个数值积分的问题。【实验前的预备知识】1&#xff0e;计算机基础知识2&#xff0e;熟悉编程基本思想3&am…

c语言贪吃蛇黑方框,[求助][贪吃蛇]源程序,请教其中一个问题。

[求助]&#xff3b;贪吃蛇&#xff3d;源程序&#xff0c;请教其中一个问题。源程序如下&#xff1a; 我的问题是&#xff0c;调节游戏速度时&#xff0c;数字为什么越大时&#xff0c;有时候竟然越快&#xff1f;#define N 200#include #include #include #define LEFT 0x4b0…

如何理解android的函数,通过Android源码理解回调函数

概述我们先看一下维基百科对回调函数的定义:在计算机程序设计中&#xff0c;回调函数&#xff0c;或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数)&#xff0c;是指通过函数参数传递到其它代码的&#xff0c;某一块可执行代码的引用。这一设计允许了底层…

盒子 Box

UVa1587 思路&#xff1a; 1.输入每个面的长宽并将每个面较长的一边放在前面 2.判断是否存在三对面分别相等 3.判断是否存在三组四棱相等 #include <stdio.h> #include <stdlib.h> #define maxn 100int cmp(const void* e1, const void* e2) {return (int)(*(d…

android 复用标题栏,Android基础---使用ToolBar教你打造一个通用的标题栏

现在项目中一般都会使用标题栏&#xff0c;谷歌在2014年推出了新的app bar---ToolBar&#xff0c;代替了以前使用的ActionBar。在做项目中会经常用到这个ToolBar&#xff0c;虽然用的很多&#xff0c;但是自己对它如何用还不是很明白&#xff0c;今天就来简单的学习下这个控件的…

android html 显示表格边框,tablelayout表格布局详解

如果你已经下载好MT4软件(很多专业外汇平台都有提供下载的)&#xff0c;在手机桌面找到图表打开&#xff0c;然后选择好交易商&#xff0c;输入账号密码就可以了。TableLayout怎样实现表格布局表格布局的子对象不能指定 layout_width 属性.宽度永远是 MATCH_PARENT。不过子对象…

android jdbc 连接mysql数据库,android怎么用JDBC方法连接mysql数据库

2016-11-21 回答用android程序去直连mysql数据库&#xff0c;觉得这样做不好&#xff0c;出于安全等方面考虑。数据库地址&#xff0c;用户名密码&#xff0c;查询sql什么的都存在程序里&#xff0c;很容易被反编译等方法看到。建议把表示层和数据层逻辑分开&#xff0c;数据层…

华为注册鸿蒙商标与三海经,华为注册了一本《山海经》?除了鸿蒙商标,还有很多...

原标题&#xff1a;华为注册了一本《山海经》&#xff1f;除了鸿蒙商标&#xff0c;还有很多5月25日消息 昨天IT之家报道&#xff0c; 国家知识产权商标局网站显示&#xff0c;&#xff0c;适用于第9类别和第42类别。申请日期为2018年8月24日。此前传闻称&#xff0c;华为OS操作…

android开机渲染视频太久,Android过度渲染优化解决方案

过度绘制是发生的每一次应用要求系统上别的画的东西。“调试GPU透支”工具覆盖上你的屏幕的色彩显示多少次像素被重绘。通过查看GPU透支来改善应用程序的渲染时间。方法1&#xff1a;打开手机设置—>开发人员工具选项—>调试GPU过度绘制—>显示GPU视图更新&#xff0c…

小米android停止,小米由于错误而停止将Android 10推广到MiA3

当小米上周宣布将为Mi A3和Redmi Note 8用户推出Android 10更新时&#xff0c;用户为最终升级他们的设备(至少在软件方面)感到非常兴奋。但是&#xff0c;这种喜悦似乎是短暂的。用户抱怨说&#xff0c;尽管收到更新通知&#xff0c;但他们仍无法下载更新。有些人甚至看到更新在…

html两张图片无缝合成一张,怎么用PS把两张图片合成一张 PS无缝拼图边缘如何处理...

PS怎么把两张图片合成一张&#xff1f;PS无缝贴图怎么用&#xff1f;PS无缝拼接要用什么工具&#xff1f;PS无缝拼图快捷键是什么&#xff1f;PS无缝拼图有色差怎么办&#xff1f;PS把两张图片合成一张边缘怎么修&#xff1f;PS无缝拼接图片边缘如何处理&#xff1f;PS把一张图…

html输入公式得到混合运算结果,excel表格如何用公式计算加减乘除混合运算-excel乘法如何计算,excel函数怎么计算乘法...

Excel支持数学中的四则运算&#xff0c;直接在目标单元格写相应的公式即可。例百如求A1减B1的差&#xff0c;在C1单元格可输入&#xff1a;A1-B1需注意&#xff1a;Excel里面任何公式(包括数学四则运算)都是需要以等号度开头。Excel里面的号用反斜杠/表示。乘法问中的x用星号*表…

汇编html文档,欢迎走进HTML的世界汇编.ppt

欢迎走进HTML的世界汇编在HTML里用和划分段落,可以不成对出现。 欢迎使用 HTML这会是一种很有趣的体验 另一个段落元素 段落划分 使用对齐属性修饰段落 学习HTML这会是一种很有趣的体验 右对齐 Left&#xff1a;左对齐 Center&#xff1a;居中 Right&#xff1a;右对齐 使用对…

html点击事件传参 php,HTML通过事件传递参数到js详解及实例

目标处理函数为selectAttr(test)1.直接传递给定参数如:οnclick"selectAttr(1);οnclick"selectAttr(a);2.传递某属性值οnclick"selectAttr(typeName.value);οnclick"selectAttr(nameId.value);3.传递this对象οnclick"selectAttr(this);通过this对…

html 属于mvvm框架,前端MVVM框架avalon揭秘 - HTML编译器

MVVM试图更加清晰的讲用户界面(UI)开发从应用程序的业务逻辑与行为中心分离&#xff0c;由于&#xff0c;不少这样的模式的实现都须要利用声明式数据绑定来实现讲View(视图)工做从其余层分离css因此出现了一大堆自定义的声明式的语法&#xff1a;html如:Avalonnode顾名思义,自定…

台式电脑怎么找不到计算机在哪,台式机没有蓝牙怎么办

台式机没有蓝牙&#xff0c;想上个蓝牙&#xff0c;该怎么样解决呢?下面由小编给你做出详细的台式机没有蓝牙解决方法介绍!希望对你有帮助!台式机没有蓝牙解决方法一&#xff1a;可以安装USB蓝牙设备知识延伸&#xff1a;给台式机安装USB蓝牙设备与台式机蓝牙连接1***先将电脑…

html的opacity标签,css中opacity是什么意思

css样式 给div样式opacity:0 是什么意思透明度 注意 ie低版本要实现透明度必须用ie特有的滤镜 而非简单的opacityCSS中 not(.active) { opacity: 0.3; } 是什么意思css的opacity让div和里面的div透明了怎样才让div里面的div不透明&#xff1f;不透明度会作用于整个元素以及它所…

使用计算机时 正确的关机顺序是( ),《计算机应用基础》半期考试卷

内容简介&#xff1a;《计算机应用基础》半期考试卷。一、选择题 (每题 2分)1.使用计算机时&#xff0c;正确的关机顺序是__A__________A先关主机&#xff0c;再关显示器&#xff0c;打印机 B先关显示器&#xff0c;再关主机&#xff0c;打印机C先关显示器&#xff0c;再关打印…

北交计算机学硕培养计划,北京交通大学硕士研究生培养方案——交通信息工程及控制...

交通信息工程及控制(专业代码&#xff1a;082302授予工学硕士学位)一、培养目标本专业研究生培养方案强调自动化与控制领域先进应用技术的研究与开发能力&#xff0c;但不忽略基础理论的培养。其培养目标是培养在控制与信息工程、自动化工程领域具有一定的理论基础、较宽的知识…