1分钟懂awk-技不在深,够用就行
1.什么是AWK
(1)Aho、Weinberger、Kernighan三位发明者名字首字母;
(2)一个行文本处理工具;
2.AWK基本原理
2.1原理:逐行处理文件中的数据
2.2语法:
awk 'pattern + {action}'
说明:
(1)单引号''是为了和shell命令区分开;
(2)大括号{}表示一个命令分组;
(3)pattern是一个过滤器,表示命中pattern的行才进行action处理;
(4)action是处理动作;
(5)使用#作为注释;
例子:显示hello.txt中的第3行至第5行
cat hello.txt | awk 'NR==3, NR==5{print;}'
2.3pattern说明
pattern参数可以是egrep正则中的一个,正则使用/pattern/
例子:显示hello.txt中,正则匹配hello的行
cat hello.txt | awk '/hello/'
说明:
(1)pattern和action可以只有其一,但不能两者都没有;
(2)默认的action是print;
例子:显示hello.txt中,长度大于100的行号
cat hello.txt | awk 'length($0)>80{print NR}'
3.内置变量
FS 分隔符,默认是空格
NR 当前行数,从1开始
NF 当前记录字段个数
$0 当前记录
$1~$n 当前记录第n个字段
例子:显示hello.txt中的第3行至第5行的第一列与最后一列
cat hello.txt | awk 'NR==3, NR==5{print $1,$NF}'
4.内置函数
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开始的子串
5.操作符
5.1运算符
类似于c,支持+、-、*、/、%、++、–、+=、-=等诸多操作;
5.2判断符
类似于c,支持==、!=、>、=>、~(匹配于)等诸多判断操作;
6.控制流程
6.1.BEGIN和END
BEGIN和END本质是一个pattern。
BEGIN用于awk程序开始开始前,做一些初始化的工作;
END用于awk程序结束前,做一些收尾的工作。
例子:统计字符个数
awk '
BEGIN
{
count=0;
}
{
count+=length($0);
}
END
{
print count;
}'
6.2流程控制语句
(1)if(condition){}else{}
(2)while{}
(3)do{}while(condition);
(4)for(init;condition;step){}
(5)break/continue:如果有END,会执行END中的收尾工作
个流程控制语句用法几乎与c相同。
7.awk与shell的交互
(1)awk中使用shell中定义的变量:使用单引号即可;
#!/bin/bash
STR="hello"
echo | awk '{
print "'${STR}'";
}'
(2)awk中使用shell命令:使用双引号,或者system命令;
#!/bin/bash
echo hello | awk '{
print $0 | "cat"
}'
或者
#!/bin/bash
echo | awk '{
system("date > date.txt")
}'
(3)awk中的变量传出至shell:没有什么好方法,老老实实用文件吧;
(4)getline:awk里,从文件中读取变量到awk中
#!/bin/bash
echo | awk '{
while(getline < "date.txt")
{
print $0;
}
}'
8.结束语
对不起,楼主欺骗了你,认真看完本文或许不止1分钟。不过,如果你真的认真阅读并超过了1分钟,相信你会有收获。
相关推荐
(1)Aho、Weinberger、Kernighan三位发明者名字首字母; (2)一个行文本处理工具;
awk学习awk学习awk学习awk学习awk学习awk学习awk学习
强烈建议所有想学awk的同志们阅读(会有很多awk语言之外的启迪) 偶然机会得到,不敢独享,故在此分享所得。 语言发明人写的,肯定不同寻常。因为他们对awk是最了解的,所以简明扼要却不乏深入。我们从中可以读到...
awk手册,学习AWK一定要收藏 awk手册,学习AWK一定要收藏 awk手册,学习AWK一定要收藏
awk知识文档,linux操作系统专业的正则表达式学习,很不错的官方文档,值得学习,分享给大家看看
sed awk全程学习
awk学习路线
AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。
awk入门初级教材,还要后续自己努力!有些重点标记!
收集的awk脚本学习 快速入门 包含sed 和正则表达式 不好用 别下 我重新上传
awk 学习资料!!!
awk参考资料, awk参考资料详情.
linux_awk 学习手册 AWK 在处理系统日常管理上很不错
AWK公证Awk koans 是一个框架,用于通过进行基于实验室的小型练习来学习 AWK。安装基本指令是下载 zip 分发包,解压到某个地方,然后运行 python koans.py视窗这需要某种可以显示ansi颜色的终端。 我已经和 ...
awk用法__都是例子 awk用法__都是例子 awk用法__都是例子 awk用法__都是例子
正文由浅入深,文后附上了大量的相关资 料,这样做的原因是为了满足各种用户的需求。
这是一本awk学习指引, 其重点着重于 : awk 适于解决哪些问题 ? awk 常见的解题模式为何 ? 为使读者快速掌握awk解题的模式及特性, 本手册系由一些较具代表性的范例及其题解所构成; 各范例由浅入深, 彼此间相互...
awk经典书籍 博文链接:https://diaocow.iteye.com/blog/1683472
awk ‘/101/’ file 显示文件file中包含101的匹配行。 awk ‘/101/,/105/’ file awk ‘$1 == 5′ file awk ‘$1 == “CT”‘ file 注意必须带双引号 awk ‘$1 * $2 >100 ‘ file awk ‘$2 >5 && $2<=15' file
IBM的awk、sed的中文学习手册,详尽,实用。