awk命令的基本使用
命令主要用法
-格式1:前置命令 | awk [选项] '[条件]{编辑指令}'
-格式2:awk [选项] '[条件]{编辑指令}' filename
常用命令选项
-F:指定分隔符,可省略(默认空格或者Tab位)
-f:调用awk脚本尽心个处理
-V:调用外部shell变量
内置变量
变量 用途
FS 保存或设置字段分隔符,如FS=":"
$n 指定分隔的第n个字段,例如$1,$4分别表示第1例,第4例
$0 当前读入的整行文本内容
NF 记录当前处理行的字段个数(有多少列)
FNR 记录当前处理行在原文本内的行号
NR 记录当前已经读入行的数量(多个文本一起读取时,行数累加)
FILENAME 当前处理的文件名
ENVIRON 调用shell环境变量,格式:ENVIRON["变量名"]
awk过滤的时机
BEGIN{}
读入第一行文本之前执行
一般用来初始化操作
逐行处理{}
逐行读入文本执行相应的处理
是最常见,用得最多的编辑指令块
END{}
处理完最后一行文本后执行
一般用来统计或处理结果
[root@localhost ~]# awk '{print "第" FNR"行" ,"有"NF"列"}' a.txt
第1行 有2列
第2行 有4列
第3行 有2列
第4行 有3列
1)输出当前用户的UID
[root@localhost ~]# awk -F: '$1==ENVIRON["USER"]{print $3}' /etc/passwd
2)预处理
[root@localhost ~]# awk 'BEGIN{a=10;print a+10}'
3)统计使用bash的用户数量
[root@localhost ~]# awk 'BEGIN{x=0}/\<bash$/{x++}END{print x}' /etc/passwd
awk处理条件概述
格式
awk [选项] '[条件]{指令}' filename
条件的表现形式
正则表达式
/正则内容/
~匹配,!~不匹配
数值/字符串比较
==,!=,>=,<=,>,<等
逻辑比较
&&逻辑与:期望多条件都成立
||逻辑或:只要有一个条件成立即满足要求
运算符
-,+,*,/,%,++,--,+=,-=,*=,/=
1)正则内容
[root@localhost ~]# awk -F: '/^root/{print}' /etc/passwd
root:x:::root:/root:/bin/bash
2)~匹配,!~不匹配
[root@localhost ~]# awk -F: '$7!~/nologin/{print}' /etc/passwd
root:x:::root:/root:/bin/bash
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown
halt:x:::halt:/sbin:/sbin/halt
3)==,!=,>=,<=,>,<等,输出第二行文本
[root@localhost ~]# awk 'NR==2{print}' /etc/passwd
bin:x:::bin:/bin:/sbin/nologin
4)&&逻辑与:期望多条件都成立
[root@localhost ~]# awk -F: '$3>=0&&$3<=10{print $1,$3}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
uucp
5)运算符,统计文本总字段数量
[root@localhost ~]# awk -F: 'BEGIN{i=0}{i+=NF}END{print i}' /etc/passwd
awk流程控制
单分支
if(条件){指令}
双分支
if(条件){指令}else{指令}
多分支
if(条件){指令}else if{指令}else{指令}
while循环
while(条件){指令}
do while
do{指令}while(条件)
for循环
for(初始值;条件;步长){指令}
1)统计UID小于或等于500的用户个数
[root@localhost ~]# awk -F: 'BEGIN{i=0;j=0}{if($3<=500){i++}else{j++}}END{print i,j}' /etc/passwd
2)统计root出现次数
[root@localhost ~]# awk -F[:/] '{i=1}{while(i<=NF){if($i~/root/){j++};i++}}END{print j}' /etc/passwd
3)for循环
[root@localhost ~]# awk 'BEGIN{for(i=0;i<=10;i++){print i}}'
数组
定义数组
格式:数组名[下标]=元素值
调用数组
格式:数组名[下标]
遍历数组
用法:for(变量 in 数组名){print 数组名[变量]}
数组的经典使用
去除文本重复行:awk '!a[$2]++{print $2}' filename
逐行分析,遇到重复行就跳过
1)去重
[root@localhost ~]# cat a.txt
[root@localhost ~]# awk '!a[$2]++{print $2}' a.txt
2)列出用户登陆shell的种类
[root@localhost ~]# awk -F: '!shell[$7]++{print $7}' /etc/passwd
/bin/bash
/sbin/nologin
/bin/sync
/sbin/shutdown
/sbin/halt
3)列出用户登陆shell的种类及个数,类似的可以统计web访问ip及访问次数
[root@localhost ~]# awk -F: '{shell[$7]++}END{for(i in shell){print i,shell[i]}}' /etc/passwd
/bin/sync
/bin/bash
/sbin/nologin
/sbin/halt
/sbin/shutdown
[root@localhost ~]# awk -F: '{shell[$7]++}END{for(i in shell){print i,shell[i]}}' /etc/passwd | sort -nr -k2
/sbin/nologin
/bin/bash
/sbin/shutdown
/sbin/halt
/bin/sync
4)统计nginx访问最多的ip
[root@ nginx]$ sudo awk '{ip[$1]++}END{for(i in ip) {print i,ip[i]}}' access.log | sort -nr -k2
146.145.196.170
111.7.10.21
124.25.17.151
47.92.114.243
11.7.100.24
111.7.100.22
111.7.100.20
106.14.217.247
47.92.126.167
11.7.100.23
111.7.10.19
111.7.100.25
111.7.10.18
111.7.100.27
111.7.10.26
80.82.70.187
83.143.86.62
80.82.78.104
awk命令的基本使用的更多相关文章
- linux awk命令详解
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- awk命令详解
搜索 纠正错误 添加实例 awk 文本和数据进行处理的编程语言 补充说明 awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一个或多个文件 ...
- Linux安全基础:awk命令的使用
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...
- AWK命令学习
使用方法 awk 'pattern {action}' {filenames} 尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到 ...
- awk 命令
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...
- AWK命令的用法
1.awk命令简介: awk是一种可以处理数据.产生格式化报表的语言,功能十分强大. awk的工作方式是读取数据,将每一行数据视为一条记录(record)每笔记录以字段分隔符分成若干字段,然后输出各个 ...
- [Linux] linux awk命令详解
reference : http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html 简介 awk是一个强大的文本分析工具,相对于g ...
- awk命令简单介绍
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
- Linux的awk命令
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
- awk命令--update20150120
简介 awk是一个强大的文本分析工具,把文件逐行读入,以空格为默认分隔符分割成field,切开的部分再进行各种分析处理. 模式和动作: 任何awk语句都是由模式和动作组成,模式部分决定动作语句何时触发 ...
随机推荐
- nginx负载均衡一:基础知识
基础信息 nginx 的 upstream目前支持 4 种方式的分配 1).轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2).weight ...
- 斯特林公式 ——Stirling公式(取N阶乘近似值)(转)
斯特灵公式是一条用来取n阶乘近似值的数学公式.一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用.从图中可以看出,即使在n很小的时候,斯特灵公式的取值已经十分准确. 公式为: ...
- Java -- POI -- 随笔汇总
1. 判断指定的单元格是否是合并单元格 /** * 功能:判断指定的单元格是否是合并单元格 * 原理:excel中的合并单元格其实就是首单元格,只不过该单元格增加了 rowspan和colspan两个 ...
- Mac OSX安装启动 zookeeper
安装 zookeeper支持brew安装 ➜ ~ brew info zookeeper zookeeper: stable (bottled), HEAD Centralized server fo ...
- iOS - WKWebView加载不受信任的https (因用到IP地址加端口号去请求数据)
1.描述:因公司域名临时出现问题,所以项目中引用到了IP地址加端口号去请求数据,因而造成在wkwebView中某些网址打不开,查看错误是因为服务器证书无效,实际就是不受信任; 2.解决办法:在plis ...
- 1.浅谈CLR
1.什么是CLR CLR(Common Language Runtime)公共语言远行时,是一个可由多种编程语言使用的“远行时”.CLR的核心功能(比如内存管理.程序集加载.安全性.异常处理和线程同步 ...
- spring框架排错
1.格式错误. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/sp ...
- MFC 应用程序中使用管道代码示意
STARTUPINFO sinf = {0}; PROCESS_INFORMATION pinf = {0}; SECURITY_ATTRIBUTES sa = {0}; HANDLE hPipeOR ...
- python金融与量化分析----Jupyter Notebook使用
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言.在本文中,我们将介绍 Jupyter notebook 的主要特性,以 ...
- WebSphere Application Server V8.5.5.0
Downloadable files Abstract IBM WebSphere Application Server Version 8.5.5 Refresh Pack for all plat ...