awk编程
来源:互联网 发布:打开23端口 编辑:程序博客网 时间:2024/05/22 16:49
awk是Linux 系统下的一个强大的文本处理工具,常常和sed、grep一起配合使用。主要功能就是将文本依行读取,然后每行按照一定的分隔符隔开放进一个array里面并提供了函数对这些元素进行一定的处理分析。在awk中,文件的每一行由域分隔符分开,每一项称为一个域。在不指明-F域分隔符的情况下,默认的域分隔符是空格。
三种方式调用awk
命令行方式
$ awk [-F field-separator] 'commands' input-file(s)
其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。shell脚本方式
将所有的awk命令插入一个可执行文件,然后把awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用。即将shell脚本首行的:#!/bin/sh
换成:#!/bin/awk
- 将所有的awk命令插入一个单独文件,然后调用:
$ awk -f awk-script-file input-file(s)
其中,-f 选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的。
awk内置变量
awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。
此外, $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
- awk编程
- awk编程
- awk 编程
- awk编程
- awk编程
- awk 编程
- AWK编程
- awk编程
- awk 编程
- awk编程
- awk编程 (转载)
- AWK高级编程
- awk编程初级篇
- AWk高级编程
- awk的混合编程
- awk编程介绍
- Shell编程-awk
- awk编程例子
- springmvc学习笔记(16)-异常处理器
- 自定义view实现圆环功能
- JVM虚拟机
- 经典数组“出圈问题”
- 我的第一篇博客!!
- awk编程
- Codeforces 868 D. Huge Strings (二分+随机+SAM)
- Binary Tree Inorder Traversal -- LeetCode
- 自定义view实现数字点击变换功能
- springmvc学习笔记(17)-上传图片
- LinuxRPM包管理-yum在线管理-光盘yum源配置
- ubuntu 16.04 LTS 内核源码下载编译流程
- org.hibernate.LazyInitializationException
- SQL交换一列中数据的值(如男女性别)