`

1分钟懂awk-技不在深,够用就行

 
阅读更多

1分钟懂awk-技不在深,够用就行

1.AWK
(1)Aho、Weinberger、Kernighan三位发明者名字首字母;
(2)一个行文本处理工具

2.基本原理
2.1原理:逐行处理文件中的数据

2.2语法:

1
awk 'pattern + {action}'

说明:
(1)单引号”是为了和shell命令区分开;
(2)大括号{}表示一个命令分组;
(3)pattern是一个过滤器,表示命中pattern的行才进行action处理
(4)action是处理动作
(5)使用#作为注释;
例子:显示hello.txt中的第3行至第5行

1
cat hello.txt | awk 'NR==3, NR==5{print;}'

2.3pattern说明
pattern参数可以是egrep正则中的一个,正则使用/pattern/
例子:显示hello.txt中,正则匹配hello的行

1
cat hello.txt | awk '/hello/'

说明:
(1)pattern和action可以只有其一,但不能两者都没有;
(2)默认的action是print
例子:显示hello.txt中,长度大于100的行号

1
cat hello.txt | awk 'length($0)>80{print NR}'

3.内置变量
FS 分隔符,默认是空格
NR 当前行数,从1开始
NF 当前记录字段个数
$0 当前记录
$1~$n 当前记录第n个字段
例子:显示hello.txt中的第3行至第5行的第一列与最后一列

1
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程序结束前,做一些收尾的工作
例子:统计字符个数

1
2
3
4
5
6
7
8
9
10
11
12
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中定义的变量:使用单引号即可

1
2
3
4
5
#!/bin/bash
STR="hello"
echo | awk '{
print "'${STR}'";
}'

(2)awk中使用shell命令:使用双引号,或者system命令

1
2
3
4
#!/bin/bash
echo hello | awk '{
print $0 | "cat"
}'

或者

1
2
3
4
#!/bin/bash
echo | awk '{
system("date > date.txt")
}'

(3)awk中的变量传出至shell:没有什么好方法,老老实实用文件吧;
(4)getline:awk里,从文件中读取变量到awk中

1
2
3
4
5
6
7
#!/bin/bash
echo | awk '{
while(getline < "date.txt")
{
print $0;
}
}'

结束语:对不起,楼主欺骗了你,认真看完本文或许不止1分钟。不过,如果你真的认真阅读并超过了1分钟,相信你会有收获。

 

http://chuansongme.com/n/949428

分享到:
评论

相关推荐

    AWK-4121介绍

    AWK-4121系列室外无线AP/网桥/客户端为工业应用提供了理想的 3合1无线解决方案,适用于不便接线、布线成本昂贵或使用移动 TCP/IP网络连接设备的场合

    MOXA_AWK-3121配置方法及要点说明

    MOXA_AWK-3121配置方法及要点说明

    无线AP藦萨AWK-3131A

    Moxa AWK-3131A 三合一工业级无线AP/Bridge/Client 支 持IEEE 802.11n 技术,数据传输率高达300Mbps,满足了 ...AWK-3131A 能够在2.4 或5GHz 频段下操作,并且向后兼 容目前的802.11a/b/g,使您的投资更着眼于未来

    awk-思维导图

    awk-思维导图

    awk使用手册

    你可能对UNIX比较熟悉,但你可能对awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度。awk是什么?与其它大多数UNIX命令...正是这三个人创造了awk---一个优秀的样式扫描与处理工具。

    Vim-101-hacks、Sed-and-Awk-101-Hacks、Linux-101-hacks 英文版(高清)PDF

    Vim-101-hacks、Sed-and-Awk-101-Hacks、Linux-101-hacks 英文版(高清)PDF

    MOXA_AWK3121配置方法

    MOXA_AWK-3121 配置方法及要点说明.pdf 挺好的,详细

    linux-awk-完全手册范本.doc

    linux-awk-完全手册范本.doc

    awk--Linux awk 命令-基础知识概要

    AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首 字符。

    sed-awk-2nd-edition.chm

    The book begins with an overview and a tutorial that demonstrate a progression in functionality from grep to sed to awk. sed and awk share a similar command-line syntax, accepting user instructions in...

    linux-awklinux-awk

    linux-awk.doc

    awk-培训.docx

    awk培训资料,可以学习一下linux强大的awk,我是从使用sql的方式整理的,例如:如何条件查询,如何去重复,如何对结果进行分组等

    3D-awk-raycaster.zip

    3D-awk-raycaster.zip,用光线投射技术完全用gawk编写的伪三维射手,3D建模使用专门的软件来创建物理对象的数字模型。它是3D计算机图形的一个方面,用于视频游戏,3D打印和VR,以及其他应用程序。

    awk用法小结--有关awk的材料

    1. awk非常适合于结构化的文本文件(行、列数据)复杂处理。相对于sed而言,它可进行复杂的编程处理,并且可以产生复杂的报表输出。 2. awk通常有三个版本,旧awk、nawk(新)、gawk。Solaris下建议用nawk,因为旧...

    Oracle ass.awk工具

    ass.awk工具用在数据库hang住时分析收集到的systemstate所用,可以清晰明了的查看systemstate中的信息; 命令简单: $ awk -f ass1033.awk [trace_name_file] 在系统hung的时候,systemstate基本等同于hanganalyze...

    benchmark-awk-vs:尝试对同一任务的 awk 和其他语言进行实际比较

    基准awk-vs 让我们来挑战一下 awk 和其他实现。 在这里报告为原始问题来自 鉴于此脚本创建的 1000 万行输入文件: $ awk 'BEGIN{for (i=1;i&lt;=10000000;i++) print (i%5?"miss":"hit"),i," third\t \tfourth"}...

    AWK 教程 - v1.0.pdf

    AWK 教程 - v1.0.pdf AWK 教程 - v1.0.pdf AWK 教程 - v1.0.pdf

    all-awk.rar_All.awk_NS2仿真_all awk_awk_awk-scripts

    网络仿真软件ns2的一个脚本文件,分析仿真结果的代码!

    GNU Awk - 中文版1

    第三版前言我跟ArnoldRobbins是好朋友。我们由于 AWK 因缘际会而结识。这是好几年前的事了。当时我正开始一份新工作,并注意到在公司角落里放着一台没用

    awk-jvm:在awk中的玩具jvm

    awk-jvm 基于本教程的awk中的玩具jvm: : 笔记 由于功能和内置的strtonum ,这需要gawk 由于awks都无法读取二进制文件,因此您首先需要通过hexdump传递类文件 示例(请参见run.sh): javac Add.java && hexdump...

Global site tag (gtag.js) - Google Analytics