Linux基本命令之awk

本文详细介绍了AWK的基本概念,包括记录、域的分割与引用,输出命令的使用,以及模式和动作的定义与应用。通过实例展示了如何使用这些特性进行数据处理。

重要概念

记录(Records):记录默认以换行符为分割符,可以设置RS变量来更改分隔符,RS可以是单个字符也可以是字符串,当RS为空时,以空行分割。

(Fields):每当一个记录被读取,awk使用FS变量作为分隔符将记录分割成域。FS可以是单个字符也可以是字符串,当FS为空时,每个字符为一个域每个域的值可以通过它的位置$1$2...引用$0表示整个记录

输出命令print用于输出文本。其输出的文本总是以"输出记录分隔符"分割的,默认值为空格符。例如:print $1, $3显示当前记录的第1和第3个域,并以预定义的输出域分隔符分隔,其默认值为一个空格符printf等同于C的格式化输出。

模式和动作awk脚本是由模式和动作组成pattern {action} 两者皆是可选的,如果没有pattern,则action应用到全部记录。如果没有action,则输出所有匹配的记录。 例如:awk '/apple/{print $0}'pattern为匹配包含apple的记录,action为打印该记录。


内建变量

NR: 已输入记录的条数。(The total number of input records seen so far.)

NF: 当前记录中域的个数。(The number of fields in the current input record.)

FILENAME: 当前输入文件的文件名。

FS: 域分隔符(input field separator)

RS: 记录分隔符。(input record separator)

OFS: 输出域分隔符(output recode separator)

ORS: 输出记录分隔符(output field separator)

OFMT: 输出数字格式(format for numeric output),其默认值为"%.6g


模式和动作

模式可以是以下任意一个:

 模式

 描述

 /正则表达式/

 使用正则表达式匹配行例如:awk '/apple/{print $0;}'

 关系表达式

 使用关系运算符对字符串和数字进行比较操作

 例如:awk '$1>100 {print $1;}'

 模式匹配表达式

 运算符 ~~! 分别表示匹配、不匹配

 例如:awk '$1 ~ /apple/ {print $1;}'

 pattern1,pattern2

 指定匹配行的范围,pattern 不能是 BEGINEND 模式

例如: awk '/apple/,/banana/{print $0;}' filename

 BEGIN

 第一条输入记录被处理之前所发生的动作

 例如:awk 'BEGIN{FS=":";}{print $1,$2;}'

 END

 最后一条输入记录被读取之后发生的动作, 例如: awk '{print $0;}END{print "total line number:",NR;}'

动作一个或多个命令、函数、表达式组成,之间由换行符或分号隔开,并位于大括号内。可以为以下任意一个:

动作

 描述

 变量赋值语句

 包括数组赋值,例如:awk 'BEGIN{total=0}{print $1;total+=$1;}END{print total;}'

 输出语句

 printprintf 语句

 流程控制结构语句

 ifforwhiledo 结构

 函数语句

 包括内置函数


内置函数
内置函数太多,用的时候查找就行,下面附上内置函数的手册地址:

   http://www.gnu.org/software/gawk/manual/gawk.html#Built_002din


AWK常用命令

Awk常用的单行命令,详见:

 http://blog.youkuaiyun.com/xinhanggebuguake/article/details/8461002

 

 

参考:http://blog.sina.com.cn/s/blog_87edb13801015dko.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值