awk工具

栏目: 服务器 · 发布时间: 7年前

内容简介:awk工具

awk

awk是一种文本分析工具,相对于grep的查找,sed的编辑。awk和sed都可以处理文本,awk比sed的强大之处在于处理列也是比较细致的,它可以对行(记录)、列(域)进行分析。awk默认的行分隔符是换行,列分隔符是Tab或者连续的空格(列分隔符分开的每个部分称为一个域)。

  • awk命令行的基本形式:
    awk option ‘script’ file1 file2 …
    awk option -f scriptfile file1 file2 …
  • awk编辑命令的格式:
    /pattern/{actions}

awk有三种调用方式:命令行方式、 shell 脚本方式以及将所有的awk命令插入一个文本中运行。

一、awk的命令行操作

  • 简单的命令行操作
正则匹配

格式:awk ‘/pattern/{action}’

表示与正则表达式pattern匹配时执行相应的action

例如:下图是打印满足以’prodectC’开头的商品价格

awk工具
条件匹配

(1)格式:awk [-F field_separator] ‘command’ file

command是awk命令,-F指定了以什么作为分割符(根据这个选项也可以自己定义分隔符),在不指明的情况下,默认的域分隔符是空格(-F的使用在后边讲)。

举例:有file文件:

awk工具

打印文件的第一列

awk工具

这里要说明一下: $ 0表示一整行的内容, $ 1表示第一列,$2表示第二列…..

(2)格式:awk ‘condiation{action}’ file

表示当满足条件condiation时执行action。仍然用上述的file举例:

打印价钱高于123的商品名:

awk工具
BEGIN{},END{}标签

awk处理文本分三个阶段:处理文本前->处理中->处理文本后,BEGIN执行的是执行之前的动作,END执行的是处理之后的动作。

其工作流程是:限制性BEGIN,然后按行读取文件,每次读取一条记录后,将记录按照指定的域分隔符分开并填充域。当所有的记录读取完后就执行END。

awk工具

二、shell脚本方式

awk也可以像执行shell脚本的方式来运行。将所有的awk命令插入一个文件,并使文件可执行,然后将awk命令解释器作为脚本的首行,并通过键入脚本名称来调用。

举例:打印上述file文件中不同价格区间的商品数量:

awk工具

三、awk命令插入一个文件运行

将所有的awk命令插入一个单独文件,然后调用。需要注意的是,在写脚本时,我们需要将shebang写成”#!/bin/awk”,类似于写shell脚本时的”#!/bin/bash”

格式:awk -f awk-script-file files

-f选项加载awk-script-file中的awk脚本,files指定要处理的文本

例如:打印file文件中不同价格区间的商品数量:

awk工具

四、awk的内置变量

awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。

ARGC               命令行参数个数
ARGV               命令行参数排列
ENVIRON            支持队列中系统环境变量的使用
FILENAME           awk浏览的文件名
FNR                浏览文件的记录数
FS                 设置输入域分隔符,等价于命令行 -F选项
NF                 浏览记录的域的个数
NR                 已读的记录数
OFS                输出域分隔符
ORS                输出记录分隔符
RS                 控制记录分隔符

举例:输出file文件每一行的域的个数(默认以空格为分隔符)

awk工具

五、awk是类C的

  • print 和 printf函数

    print:参数可以是变量、数值或字符串,字符串必须用双引号引用,参数之间用逗号隔开

    printf:用法和C类似,可格式化输出。当输出复杂时,printf会更好用一些

    举例1:统计每行域的个数

    awk工具

举例2:以name:xx count: xx pro:xx 格式统计file文件的内容

awk工具
  • 循环语句与条件判断

    awk的循环可以使用BEGIN{} END{}标签实现,当然也可以用类C的while/for循环实现

    举例1:统计/etc/passwd下的账户人数

    awk工具

举例2:使用while循环输出满足条件的file中的内容

awk工具

条件判断的举例参考第二部分:shell方式运行awk


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

一胜九败

一胜九败

柳井正 / 徐静波 / 中信出版社 / 2011-1-19 / 28.00元

优衣库成长的过程,就是一个历经了无数次失败的过程。他们经历过无法从银行融资的焦灼,经历过“衣服因低价热销,但人们买回去之后立即把商标剪掉”的难堪,经历过为上市冲刺而拼命扩张店铺的疯狂,也经历过被消费者冷落、疏离的苦痛……但正是从这些失败中学到的经验与教训,让柳井正走向了成功。 《一胜九败:优衣库风靡全球的秘密》就像是柳井正的错误集,在这里,他毫不隐晦地将公司业绩低迷的原因、进军海外失败的因素......一起来看看 《一胜九败》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码