awk介绍
awk 是一个强大的文本处理工具,它将文本逐行读入,并进行切片,默认以空白格为分割符,对单个切片进行分析,处理。
用法:
awk '{pattern + action}' {filenames}
尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern就是要表示的正则表达式,用斜杠括起来。
awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。
通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。
选项:
-F : 指定地段分割符:默认分割符为空白字符
如:[root@localhost@~]#awk '{print $2,$4}' /etc/fstab
print :显示第2段和第4段, 对个参数之间用,号分割
输出的可以是:字符串,数值,当前字段 变量 或 表达式
awk ‘{print "hello",$1,$2,6}’
变量:
内建变量:
FS 输入分割符就等于 -F --- awk -v FS=':' '{print $1,$2,$3}' = awk -F: '{print $1,$2,}'
OFS 输出分隔符 awk -v OFS=“:” ‘{print $1,$2.$3}’
也可以一起设定:awk -v FS=’:’ -v OFS=’:’ ‘{print $1,$2.$3}’ /etc/passwd
NF : 输出每一行统计的字段数
NR:行数,可以设定行号
FNR :文件中行数 各文件分别计数
FILENAME : 文件名 每行都会显示一次文件名 有多少行显示多少次文件名
ARGC: 命令行参数的个数
ARGV : 数组 保存命令行中的个参数
BEGIN:显示一次: awk ‘BEGIN{print }’
END{}:j仅在文本处理完成后执行一次
自定义变量: -v var=value
awk -v test='hello' 'BEGIN{print test}'
awk 'BEGIN{test="hello"; print test}'
printf 命令:格式化输出命令
awk '{printf ARGC}' /etc/fstab
注意 不会换行需要给出换行符\n
3FORMAT中需要分别为后面的每一个item指定一个格式化符号
格式化符号:
%c ;显示字符SACII码
%d %i ;显示十进制整数
%e,E 科学计数法数值显示
%f 显示浮点数
%s 显示字符串
%u 无符号整数
%% ;显示%自身
awk -F: '{printf "username:%s,uid:%d\n",$1,$3}' /etc/passwd
修饰符: #[.#] : 第一个数字控制显示的宽度,第二个表示小数点的
awk -F: '{printf "username:%15s, uid:%15d\n",$1,$3}' /etc/passwd 实现对齐 -15 表示左对齐
操作符:
算术操作符: + - * / ^ %
赋值操作符 : = += -= ++ --
比较操作符: < > <= >= != ==
逻辑操作符:&& || !
函数调用:name(参数,canshu2)
匹配条件:
/regular/ :仅处理能够被匹配到的行: awk ‘/^UUID/{print $1}’ /etc/fstab
relational:关系表达式结果为真才处理,真:结果为非0值
awk –F: ‘$3>=1000{print $1,$3}’ /etc/psswd
awk -F: ‘$NF==”/bin/bash” {print $1,$NF}’ /etc/passwd
line ranges :行范围 开始行 ,结束行
awk -F: ‘(NR>=2&&NR<=10){print $1}’ /etc/paswwd
1 if—else 语法
格式 if(条件) statement else statment
[root@localhost ~]# awk -F: '{if($3>100) print $1,$3}' /etc/passwd
uid 大于1000的显示为普通用户,否则显示root或系统用户
awk -F: '{if($3>=1000) {printf "connes user:%s id:%d\n", $1,$3} else {printf "root or sys:%s id:%d\n",$1,$3}}' /etc/passwd
$NF 表示最后一个字段 NF 是一行字段数
awk -F: '{if($NF == "/sbin/nologin") print $1}' /etc/passwd
]# df -h |awk -F'%' '/^\/dev/ {print $1}'
2 while 语句
while(条件) statement
使用场景;对一行中多个字段逐一处理时 或对数组中多个元素逐一处理
awk '/^[[:space:]]*kernel/ {print}' /etc/grub.conf
awk '/^[[:space:]]*kernel/{i=1; while(i<=NF) {print $i,length($i); i++}}' /etc/grub.conf
awk '/^[[:space:]]*kernel/{i=1; while(i<=NF) {if(length($i)>7) {print $i,length($i)}; i++}}' /etc/grub.conf
for 语句
for(export1;export2;export3) statement
]# awk '/^[[:space:]]*kernel/ {for(i=1;i<=NF;i++) {print $i,length($i)}}' /etc/grub.conf
遍历数组中元素: for(var in arry) statement
switch语句case
break 和continue 语句
next语句,提前结束直接进入下一行
[root@localhost ~]# awk -F: '{if($3%2!=0) next; print $1,$3}' /etc/passwd
数组: week[mon]=”monday” 关联数组
# awk 'BEGIN{week["mon"]="monday";week["tu"]="tusday";week["we"]="weekday";for(i in week) {print week[i]}}'
]# awk 'BEGIN{week["mon"]="monday";week["tu"]="tusday";week["we"]="weekday"; print week["mon"]}'
函数:
内置函数:
rand() :返回0和1之间任意数
length():返回指定字符串长度
sub(r,s,[t]) 以r模式来查找t字符串中匹配的内容,并将第一次出现替换为s多表达的内容
awk -F: ‘{print sub(o,O, $1)}’ /etc/passwd
自定义函数:
]# netstat -tan | awk '/^tcp\>/ {print $0}'
awk介绍的更多相关文章
- AWK 介绍
一.模式和动作 awk脚本是由模式和操作组成的:pattern {action} pattern与{action}两者是可选的.如果没有模式,则action应用到全部记录,如果没有action,则输出 ...
- Shell 学习—AWK介绍
Shell 学习—AWK = = = 安装awk root@kiki-desktop:~/shell# apt-get install gawk gawk-doc = = = awk 是一种程序语言. ...
- shell编程awk基础介绍
awk介绍 报告生成器,格式化文本输出 处理机制类似sed命令,自带循环处理 读入一行处理一行然后自动读取下一行再进行处理 sed命令换行的标识是固定的,只能是回车换行. awk里面的换行 ...
- AWK的介绍学习
第一节.awk的工作流程和基本用法 1.awk介绍 awk是一种报表生成器,就是对文件进行格式化处理的,这里的格式化不是文件系统的格式化,而是对文件内容进行各种"排版",进而格式化 ...
- 『忘了再学』Shell基础 — 27、AWK编程的介绍和基本使用
目录 1.AWK介绍 (1)AWK概述 (2)printf格式化输出 (3)printf命令说明 2.AWK的基本使用 (1)AWK命令说明 (2)AWK命令使用 1.AWK介绍 (1)AWK概述 A ...
- 【译】 AWK教程指南 1前言
前面的话: 这几天写了一个程序,在同一个目录里生成了很多文件,需要统计其中部分文件的总大小,发现经常用到的ls.du等命令都无济于事,我甚至都想到了最笨的方法,写一个脚本:mkdir一个新目录,把要统 ...
- 【译】 AWK教程指南
前面的话: 这几天写了一个程序,在同一个目录里生成了很多文件,需要统计其中部分文件的总大小,发现经常用到的ls.du等命令都无济于事,我甚至都想到了最笨的方法,写一个脚本:mkdir一个新目录,把要统 ...
- 正则表达式、find、grep、awk、sed
1.正则表达式 (1)正则表达式一般用来描述文本模式的特殊用法,由普通字符(例如字符a-z)以及特殊字符(称为元字符,如/.*.?等)组成. (2)基本元字符集及其含义 ^ :只 ...
- awk进阶整理
BEGIN{写在前言,我英语不好,有许多地方直接使用的谷歌翻译.为了能理清awk工具使用的思路,详情还要看awk说明书(man awk) 或者http://www.gnu.org/software/g ...
随机推荐
- 1-HTML Attributes
下表列举了常用的Html属性 Attribute Description alt Specifies an alternative text for an image, when the image ...
- Ex4_21 最短路径算法可以应用于货币交易领域..._第十二次作业
(a) 建立一个有向图G(V,E),每个顶点表示一种货币,两个顶点之间的边权的大小ex[u][v]表示两种货币之间的汇率,若要找一个最有利的兑换序列,把货币s兑换成货币t,即在若干种兑换序列中选择 ...
- CSS基础入门
css基础语法 一.CSS格式 选择器{ 属性名:属性值; 属性名:属性值; } 选择器负责圈定范围,要修改的元素集合,花括号内的声明由属性名和属性值组成(key:value)的形式,用于设定具体样式 ...
- linux软件安装、rpm操作命令、本地yum配置(有什么用)
1.yum是什么? yum的全称是yellow dog updater,modified,是一个shell前端软件包管理器;基于RPM包管理,能够从指定的服务器下载RPM包并自动安装,可以自动处理依赖 ...
- 2018谷歌I/O开发者大会8大看点汇总 新品有哪些
2018谷歌I/O开发者大会8大看点汇总 新品有哪些美国科技媒体The Verge近日撰文,列举了在即将召开的2018年谷歌I/O开发者大会上的8大看点,包括Android P.人工智能等等. 以下为 ...
- Android “Command” from work summary
总结一下Android中的命令. 一.adb 与 shell ADB的全称为Android Debug Bridge(调试桥).是一个适用命令行工具,用来与模拟器实例或链接的Android设备进行通信 ...
- SSM框架整合篇
目录 SSM整合 框架搭建步骤 SSM整合 Author:SimpleWu github(已上传SSMrest风格简单增删该查实例):https://gitlab.com/450255266/code ...
- WireShark 实例分析笔记(概念)
1.嗅探器工作原理(中文版) 安装软件的附带WinPcap(实现从网卡接受数据可视化) 数据嗅探器工作原理, 第一:收集数据(数据包嗅探器从网络线缆上收集原始二进制数据,选定特定网卡设置混杂模式来完 ...
- jquery checkbox勾选/取消勾选只能操作一次的诡异问题
第一次执行,没问题,但第二次执行就有问题了,选择不了 解决办法:把attr()换成prop() $("#CheckedAll").click(function () { if ($ ...
- 极光推送>>java SDK服务端集成后台项目(使用详解)
PS:如果你是第一次用推送,那就直接按照我的步骤来,再去看官方文档,这样,更容易能理解操作流程.还有——-请耐心看 极光文档(java SDK)请参考 [ 极光文档 ] 步骤一: 首先,你必须在 [极 ...