awk编程

来源:互联网 发布:打开23端口 编辑:程序博客网 时间:2024/05/22 16:49

awk是Linux 系统下的一个强大的文本处理工具,常常和sed、grep一起配合使用。主要功能就是将文本依行读取,然后每行按照一定的分隔符隔开放进一个array里面并提供了函数对这些元素进行一定的处理分析。在awk中,文件的每一行由域分隔符分开,每一项称为一个域。在不指明-F域分隔符的情况下,默认的域分隔符是空格。

三种方式调用awk

  1. 命令行方式
    $ awk [-F field-separator] 'commands' input-file(s)
    其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。

  2. shell脚本方式
    将所有的awk命令插入一个可执行文件,然后把awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用。即将shell脚本首行的:#!/bin/sh换成:#!/bin/awk

  3. 将所有的awk命令插入一个单独文件,然后调用:
    $ awk -f awk-script-file input-file(s)

    其中,-f 选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的。

awk内置变量

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

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

此外, $1变量是指整条记录,$1表示当前行的第一个域,$2表示当前行的第二个域,……以此类推。

awk编程

关于awk的编程,其基本语法如下:

awk  -F ':'  'BEGIN '{pattern + action}'  '{pattern + action}' END '{pattern + action}'' {input-filenames}

awk工作流程是这样的:先执行BEGING,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。除了awk的内置变量,awk还可以自定义变量。
下面累加 number.txt 的总和为例:

$ cat number.txt123456778889325789353$ awk 'BEGIN {print "Start counting"} {sum+=$0;} END {print "Sum is ", sum}' number.txtStart countinguser count is  40

sum是自定义变量,之前的action{}里都是只有一个print,其实print只是一个语句,而action{}可以有多个语句,以;号隔开。

更多用法可以参见官网:
http://www.gnu.org/software/gawk/manual/gawk.html

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 六个月的宝宝有清水鼻涕怎么办 一岁三个月宝宝流清鼻涕怎么办 宝宝流清水鼻涕怎么办最简单方法 8个月宝宝流清鼻涕怎么办 7个月宝宝流清鼻涕怎么办 9个月宝宝流清鼻涕怎么办 十一个月宝宝流清鼻涕怎么办 18个月宝宝咳嗽有痰怎么办 2个月宝宝鼻子不通气怎么办 两个月的宝宝鼻塞不通气怎么办 两个月大的宝宝鼻子不通气怎么办 宝宝6个月咳嗽有痰怎么办 6个月的宝宝有痰怎么办 小孩流有点咳嗽和脓鼻涕怎么办 6个月的宝宝流鼻涕该怎么办? 小孩鼻塞不流鼻涕总吸鼻子怎么办 四个多月宝宝感冒鼻塞严重怎么办 怀孕6个月严重感冒鼻塞怎么办 16个月的宝宝上火流鼻血怎么办 小狗咳嗽打了针还不好怎么办 孕妇感冒后鼻涕带血口腔发炎怎么办 宝宝出生17天睡眠不安稳怎么办 月子里宝宝睡觉老是睡不安稳怎么办 孕妇晚期咳嗽鼻涕黄咽喉痛怎么办 狗狗流脓鼻涕拉稀没食欲怎么办 孕妇眼睛充血很快就有眼屎怎么办 婴儿的眼睛流泪生眼屎怎么办呀 刚出生的婴儿眼睛有眼屎怎么办 25天的婴儿鼻子有鼻屎不通怎么办 一个月的宝宝好多鼻屎怎么办 隆鼻取线的时候好多鼻屎怎么办 小孩流浓鼻涕怎么办最简单方法 小孩流黄鼻涕怎么办最简单方法 一岁八个月宝宝鼻涕和痰多怎么办 空调铜管过不了预埋管的弯头怎么办 如果朝鲜和韩国打起来中国怎么办 寄信时不知道对方的邮编怎么办 地下钱庄转账后银行户被冻结怎么办 老师遇到素质极差的垃圾学生怎么办 验证码忘了手机号也换了怎么办 手机上的验证码忘了怎么办