GNU gawk工具的功能是将指定文件中符合指定模式(pattern)的行按指定的动作(action)进行格式化处理
语法:gawk [options] [program] [file-list]

1、program格式

'pattern {action}'

2、$1,...,$n: 第1列,...,第n列

3、~ (matches operator):包含

$ gawk '$1 ~ /h/' cars

4、关系运算符:==,<=,>=,!=,>,<

#dpkg –get-selections | gawk '$2 != "install" {print $0}'
$ gawk '$5 <= 3000' cars

5、范围运算符:,

$ gawk '/volvo/ , /bmw/' cars

6、BEGIN 模式、END模式

$ gawk 'END {print NR, "cars for sale." }' cars

7、$0: 当前行

8、length函数

$ gawk '{print length, $0}' cars | sort -n

9、NR (record number)变量

$ gawk 'length > 24 {print NR}' cars
$ gawk 'NR == 2 , NR == 4' cars

10、OFS变量:输出字段分隔符(onput field separator)

BEGIN   {OFS = " "}
{
if ($1 ~ /ply/)  $1 = "plymouth"
if ($1 ~ /chev/) $1 = "chevrolet"
print
}

11、FS: 输入字段分隔符(input field separator)

$ cat find_uid
 
BEGIN            {FS = ":"
 saveit = 0}
$3 > saveit     {saveit = $3}
END                {print "Next available UID is " saveit + 1}
 
$ gawk -f find_uid /etc/passwd
Next available UID is 192
 
$ gawk -F: '{print $2}' file;    //-F选项用来在命令行上给FS重新赋值
 
$ gawk -F[: ] '{print $2}' file //使用多个分隔符:空格、冒号:和TAB

12、printf函数

BEGIN   {
printf "%-10s %-8s    %2d   %5d     $ %8.2f",
$1, $2, $3, $4, $5
}

13、重定向输出

$ cat redirect_out
 
/chevy/    {print > "chevfile"}
 
/ford/     {print > "fordfile"}
 
END        {print "done."}
 
$ gawk -f redirect_out cars

14、if...else控制结构

$ cat price_range
 
{
if ($5 <= 5000) $5 = "inexpensive"
else if  (5000 < $5 && $5 < 10000)  $5 = "please ask"
else if  (10000 <= $5)  $5 = "expensive"
printf "%-10s %-8s    %2d    %5d    %-12s",$1, $2, $3, $4, $5
}

15、getline

读取一行,然后gawk的指针指向下一行(NR递增)。如果不带变量:行指针立即变化,NR递增,$0-$n变化;如果带变量: 行指针在{}内不变化,NR递增,$0-$n不变化
 
$ cat g4
{
print NR, "$0:", $0
getline aa
print NR, "aa:", aa
}
 
$ gawk -f g4 < alpha
 
1 $0: aaaaaaaaa
 
2 aa: bbbbbbbbb
 
3 $0: ccccccccc
 
4 aa: ddddddddd

16、其它

gawk 的|&相当于bash的管道 |
gawk能够从网络上获取文件的信息
gawk中的变量赋值后,引用变量不用$,直接引用,不同于bash。
 

=-=-=-=-=
Powered by Blogilo

gawk的用法的更多相关文章

  1. gawk(awk)的用法案例

    gawk(awk)的用法案例 本文首先简单介绍一个gawk和awk的区别,然后是一点基本使用流程,最后是自己做的一个分析数据文件的脚本代码,供大家参考.另外想了解基本流程的入门知识的可以下载附件pdf ...

  2. awk 用法(使用入门)

    转自:http://www.cnblogs.com/emanlee/p/3327576.html awk 用法:awk ' pattern {action} '  变量名    含义 ARGC   命 ...

  3. awk用法

    目前虽然有很多工具可以代替awk,但是呢我还是认为awk还是非常重要,比如有时候load数据到hive,mysql发现数据有点问题,这样可以先对比文件和库中数据是否一致,这样awk就发挥用处了,还有从 ...

  4. 测试技能积木-AWK的简要用法

    做测试工作,经常要分析日志,有的时候活儿还很脏很累,比如抽取符合某些pattern的行,重新格式化等等.有的时候,我们需要也创造一些测试用数据文件.基于上述两种原因,在Unix Like 系统上,一些 ...

  5. Linux Shell 示例精解(第七章 gawk编程)转载

    第七章 gawk功能:gawk编程 7.1.1 数字和字符串常量     初始化和类型强制  在awk中,变量不需要定义就可以直接使用,使用一个变量就是对变量的定义.变量的类型可以试数字.字符串,或者 ...

  6. AWK用法入门详解

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...

  7. awk简单用法

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...

  8. 《Linux命令行与shell脚本编程大全》第十九章 初识sed和gawk

    这两个工具能够极大简化需要进行的数据处理任务. 19.1 文本处理 能轻松实现自动格式化.插入.修改或删除文本元素的简单命令行编辑. sed和gawk就具备上述功能 19.1.1 sed编辑器 被称为 ...

  9. 《Linux命令行与shell脚本编程大全》第二十二章 gawk进阶

    gawk是一门功能丰富的编程语言,你可以通过它所提供的各种特性来编写好几程序处理数据. 22.1 使用变量 gawk编程语言支持两种不同类型的变量: 内建变量和自定义变量 22.1.1 内建变量 ga ...

随机推荐

  1. SVD之最小二乘【推导与证明】

    0.SLAM中SVD进行最小二乘的应用 在SLAM应用中,计算Homography Matrix,Fundamental Matrix,以及做三角化(Triangulation)时,都会用到最小二乘 ...

  2. 【算法系列学习】状压dp [kuangbin带你飞]专题十二 基础DP1 D - Doing Homework

    https://vjudge.net/contest/68966#problem/D http://blog.csdn.net/u010489389/article/details/19218795 ...

  3. 蓝桥杯- 奇妙的数字-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  4. MySQL AutoCommit带来的问题

    现象描述 测试中发现,服务A在得到了服务B的注册用户成功response以后,开始调用查询用户信息接口,却发现无法查询出任何结果.检查binlog发现,在查询请求之前,数据库确实已经完成了commit ...

  5. 【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器

    一.打印控件 第一步先把打印对象搞出来. - printDocument    打印对象(将要打印的内容放到该对象里,从该对象里取内容打印) 设置他的PrintPage事件(对于要打印的每一页触发一次 ...

  6. 最大流算法之Dinic

    引言: 在最大流(一)中我们讨论了关于EK算法的原理与代码实现,此文将讨论与EK算法同级别复杂度(O(N^2M))的算法--Dinic算法. Dinic算法用到的思想是图的分层结构,通过BFS将每一个 ...

  7. 面向对象设计(Object-Oriented Design,OOD)

    前言 OOD简介 Shubho:亲爱的,让我们开始学习OOD吧.你了解面向对象原则吗? Farhana:你是说封装,继承,多态对吗?我知道的. Shubho:好,我希望你已了解如何使用类和对象.今天我 ...

  8. SSH免密码(日志三)

    上一篇:JDK安装以及安装过程中出现的问题(日志二) 原理,就是RSA加密,含有公钥和私钥,具体言之,用公钥来确认请求人是否是私钥的持有人. 1, 2, 3, 4, ssh免密码过程中遇到的问题:需要 ...

  9. mysql语句优化总结(一)

    Sql语句优化和索引 1.Innerjoin和左连接,右连接,子查询 A.     inner join内连接也叫等值连接是,left/rightjoin是外连接. SELECT A.id,A.nam ...

  10. Springboot数据访问,棒棒哒!

    Springboot对数据访问部分提供了非常强大的集成,支持mysql,oracle等传统数据库的同时,也支持Redis,MongoDB等非关系型数据库,极大的简化了DAO的代码,尤其是Spring ...