您的位置:首页 > 其它

awk 探秘( 一)

2013-09-06 11:26 134 查看
AWK是一种模式扫描和处理语言,它搜索一个活多个文件,以查看这些文件中是否存在匹配指定模式的记录。使用AWK可以生成报告或者过滤文本。它在处理时不区分数字和文本,如果将两者混合在一起,AWK通常可以得出正确的答案。1.语法:gawk[options] [program] [file-list]gawk[options] -f program-file [file-list]2.语言基础:gawk程序(来自命令或者程序文件中的程序)由一行或者多行文本构成,其中包含一个模式(pattern)和/或动作(action),格式如下: pattern {action}2.1 模式(pattern) ~ 和 !~ 用斜杠把正则表达式扣起来,就可以将其看做模式。“~”运算符用于测试某个字段或者变量是否匹配正则表达式。" !~ "运算符用于测试不匹配。可以使用布尔运算||(OR) 或者&&(AND)来组合任何模式。例:gawk '/volvo/ ' carsgawk '2000 <= $5 && $5<9000' cars BEGINEND BEGINEND是两种独特的模式,分别执行在gawk开始处理输入信息之前和处理完毕输入之后的命令。例:gawk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t " $3}' /etc/passwdgawk 'END {print NR, "/etc/passwd print."} ' /etc/passwd
,(逗号) 逗号是范围运算符例:gawk '/volvo/ , /bmw/ ' carsgawk 'NR == 2 , NR == 4' cars2.2 动作(action) 如果gawk匹配某种模式,它就执行gawk命令的动作部分所指定的动作。如果没有指定动作,默认print命令,这个动作将记录从输入复制到标准输出。 如果print命令后面带有参数,gawk就只能显示用户指定的参数。这些参数可以是变量或者字符串常量。可以将print命令的输出发送到文件(>),追加到文件(>>)或者通过管道将其发送给另一个程序的输入(|)。 除非用逗号将print命令中的各项分开,否则gawk将它们连接起来。逗号使得gawk用输出字段分隔符(OFS,通常是空格)将各项分隔开。 用分号将多个动作隔开,可以在同一行上使用多个动作。3.变量
变量含义
$0 当前记录
$1~$n 当前记录中的字段
FS 输入字段分隔符
NF 当前记录的字段数目
NR 当前记录的记录编码
OFS 输出字段分隔符(默认为空格)
例:
last -n 5 | awk '{ print $1 "\t lines: " NR "\t columes: " NF}'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息