文档章节

shell编程总结14(gawk初级)

心中的理想乡
 心中的理想乡
发布于 2017/02/25 21:34
字数 641
阅读 15
收藏 0

说明一下。现在到后面的几个章节,可学习的内容不多了。对于sed与gawk这两个重量级的东西,我在最近的项目工具上面看到了他们的身影(主要是awk,gawk他爹)。对于文本的自动化shell编程处理,躲不开要用到这些个高级的工具。我像在这个地方,我就拆开进行总结学习,学多了首先记不住两个工具的具体用法,其次无法马上用起来。我在这里,选择gawk来先学习。这一章总结主要总结一下gawk的基础。
1、基本的命令格式:
    gawk option program file
        选项:
            -F fs 指定行中分割数据段的字段分隔符
            -f file 指定读取程序的文件名
            -v var=value 定义gawk程序中的一个变量及其默认值
            -mf N 指定要处理的数据文件中的最大字段数
            -mr N 指定数据文件中的最大数据行数
            -W keyword 指定gwak的兼容模式或警告等级

2、基本的使用:
    gawk '{print "Hello World!"}'
    说明:这个执行之后由于没有指定输入的文件,所以命令行会一直处在交互的状态,一直在等待标准输入往里面输入值,每次输入值之后,都会执行单引号里面的程序(里面可以说是一个小型的脚本语言程序吧)
3、gawk的基本特性之一是它处理文本文件中数据的能力。他会自动给每行中的每个数据元素分配一个变量。默认情况下的变量分配如下:
    $0代表整个文本行
    $1代表文本行中的第一个数据字段
    $2代表文本行中的第二个数据字段
    $n代表文本行中的第n个数据字段
每个数据字段在文本行中都是通过字段分隔符来划分的。

4、直接从文件中读取程序来处理文本文件数据
文件中的程序:
{print $1 "'s home directory is " $6}
执行命令:
gawk -F: -f programFile /etc/passwd
在这里用到了一个-F的选项,主要用来指定,每一个行中的分割字段的分隔符是什么
5、在数据处理之前运行脚本与之后运行的脚本
    举例:    
        BEGIN{
            print "The latest list of users and shells"
            print "UserId        shell"
            print "------        ------"
            FS=":"
        }
        {
            print $1 "        " $7
        }
        END{
            print "This concludes the listing"
        }
        运行脚本:
        gawk -f programFile /etc/passwd

© 著作权归作者所有

共有 人打赏支持
心中的理想乡

心中的理想乡

粉丝 23
博文 76
码字总数 104605
作品 0
深圳
程序员
私信 提问
shell学习之awk或gawk

AWK 是该编程语言本身的名称,它编写于 1977 年。其名称是三个主要作者的姓的首字母缩写:Drs. A. Aho、P. Weinberger 和 B. Kernighan。 因为 AWK 是一种文本处理和模式匹配语言,所以它通常...

woshixin
2018/11/29
0
0
初识sed与gawk

博文阅读 学习内容: 学习sed编辑器 gawk编辑器入门 sed编辑器基础 shell脚本最常见的一个用途就是处理文本文件,但仅靠shell脚本命令来处理文本文件的内容有点勉为其难。如果我们想在shell...

王诗翔
2017/12/26
0
0
shell常用命令

1.声明函数 function func1{ ........ }或者func1(){} 2.使用函数 func1 3while循环 while [ condtion ] do done 4.$?显示上一条运行码 5.使用return命令 function db1{ return 222 } db1......

泡海椒
2016/01/26
33
0
利用 gnuplot 绘制图 sar搜集数据

利用gnuplot工具对sar 搜集的数据绘图 [root@nd3 ~]# sar -b -f /var/log/sa/sa26 |gawk '/^[^a-z]+$/{print $1"t"($NF+$(NF-1))}' >/tmp/block.tmp [root@nd3 ~]# cat /tmp/block.tmp 11:5......

浮生θ谨记
2013/03/01
0
0
linux awk

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

疯code
2016/09/18
37
0

没有更多内容

加载失败,请刷新页面

加载更多

数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
44分钟前
2
0
nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
3
0
java 反射

基本概念 RTTI,即Run-Time Type Identification,运行时类型识别。RTTI能在运行时就能够自动识别每个编译时已知的类型。   要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运...

细节探索者
昨天
1
0
推荐转载连接

https://www.cnblogs.com/ysocean/p/7409779.html#_label0

小橙子的曼曼
昨天
3
0
雷军亲自打造的套餐了解下:用多少付多少

12月28日消息,小米科技创始人兼CEO雷军微博表示,小米移动任我行套餐方案,原则上就是明明白白消费,用多少付多少,不用不花钱!上网、电话和短信都是一毛钱,上网0.1元/M,电话0.1元/分钟,...

linuxCool
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部