awk简单应用详解

gawk:pattern scanning and processing language

语法:gawk [options] ‘program‘ FILE ...

program:PATTREN{ACTION STATEMENTS}

选项:

-F :指明输入数据时的字段分隔符

-v var=value:自定义变量

1、print

print item1,item2,...

要点:(1) 逗号分隔符

(2) 输出的各item可以是字符串,数值,字段(使用&引用),变量(直接输入变量即可)或者awk表达式

(3) 如果省略item,相当于print $0

2、变量

内置变量

FS:input field seperator输入时的分隔符:默认为空白字符

OFS:onput field seperator输出时的分隔符:默认为空白字符

RS:input record seperator:输入时的换行符

ORS:output record seperator:输出时的换行符

NF:number of field :每一行字段数量

NR:number of recor :行数

FNR:各文件分别计数:行数

FILENAME:当前文件名

ARGC:命令行参数的个数 (命令前使用BEGIN只显示一次)

ARGV:数组ARGV[#]:保存的是命令行中所给定的各参数

自定义变量

(1)-v var=value 区分大小写

(2) 在program中直接定义

awk ‘{test="1";print test}‘ filename

若不对文件做处理:awk ‘BEGIN{test="1";print test}‘

3、printf命令

格式化输出:printf FORMAT(格式符),item1,item2,...

(1) FORMAT 必须给出

(2) 不会自动换行,需要显示给出换行控制符 \n

(3) FORMAT需要分别为后面的每个item指定一个格式化符号

格式符:

%c :显示字符的ASCII码

%d,%i:显示十进制整数

%e,%E:科学计数法数值显示

%f:浮点数

%g,%G:科学计数法或浮点数

%s:字符串

%u:无符号整数

%%:显示%自身

修饰符:

#[.#]:第一个数字控制显示的宽度,第二个显示小数点后的精度(%3.1f)

-:左对齐,默认右对齐

+:显示数值的符号(正负)

4、操作符

算数操作符

双目:+-*/ ^ %

单目:-x   +x

字符串操作符:没有符号的操作符,字符串连接

赋值操作符:  =   +=  -= *= ...

比较操作符: >    >=    <    <=    !=     ==

模式匹配符:~   匹配

!~ 不匹配

逻辑操作符:&& ||  !

函数调用:function_name(argu1,argu2,...)

条件表达式:select?if-true-expression:if-false-expression

5、pattern

(1) empty:空模式,匹配每一行

(2) /regular expression/:正则表达式,仅处理匹配行

(3) 条件表达式/关系表达式:结果有“真”“假”,处理结果为“真”的行

真:结果为非0值,非空字符串

(4) line ranges:行范围

startline,endline:/pat1/,/pat2/由模式匹配指出范围

不支持直接给出数字的格式

awk -F:‘(NR>=2&&NR<=10){print $1}‘ /etc/passwd

(5) BEGIN/END模式

BEGIN{} :仅在开始处理文件中文本之前执行一次的程序

END{}:仅在文本处理完成之后执行一次

6、常用action

(1) expressions

(2) control statements:if,while等

(3) compound statements:组合语句:

(4) input statements

(5) output statements

7、控制语句

if(condition) {statements} else {statements}

while(conditon) {statements}

do {statements} while(conditon)

for(expr1;2;3) {statements}

break

continue

delete array[index]

delete array

exit

{ statements }

示例:

1、-F:指明输入数据时的字段分隔符,默认为空白字符。示例为使用“:”为分隔符,并输出第一组元素:

[[email protected] ~]# tail -n 5 /etc/passwd | gawk ‘{print $1}‘
pulse:x:497:496:PulseAudio
sshd:x:74:74:Privilege-separated
tcpdump:x:72:72::/:/sbin/nologin
armo:x:500:500:CentOS
named:x:25:25:Named:/var/named:/sbin/nologin
[[email protected] ~]# tail -n 5 /etc/passwd | gawk -F: ‘{print $1}‘
pulse
sshd
tcpdump
armo
named

2、-v var=value与BEGIN共同使用:单独使用BEGIN不处理文本,只做输出动作,结合自定义变量的使用:(可使用选项定义,也在直接在program中定义变量)

[[email protected] ~]#  awk -v test=armo ‘BEGIN{print test}‘
armo
[[email protected] ~]#  awk ‘BEGIN{test="armo";print test}‘
armo

3、内置变量的使用:NR:显示行号

[[email protected] ~]# tail -n 5 /etc/passwd | awk -F: ‘{print  NR,$1,$2 }‘
1 pulse x
2 sshd x
3 tcpdump x
4 armo x
5 named x
[[email protected] ~]#

4、printf的格式化输出

[[email protected] ~]# awk -F: ‘{printf ("%s,%s\n",$1,$2)}‘ /etc/passwd
root,x
bin,x
daemon,x
adm,x
lp,x
...
[[email protected] ~]# awk -F: ‘{printf ("%15s    --%5s\n",$1,$2)}‘ /etc/passwd
           root    --    x
            bin    --    x
         daemon    --    x
            adm    --    x
             lp    --    x
           sync    --    x
       shutdown    --    x
           halt    --    x
           mail    --    x
第一域字符宽度15,第二域字符宽带5
[[email protected] ~]# awk -F: ‘{printf ("%-15s%+5.3f\n",$1,$3)}‘ /etc/passwd
root           +0.000
bin            +1.000
daemon         +2.000
adm            +3.000
lp             +4.000
sync           +5.000
shutdown       +6.000
第一域左对齐宽度15输出,第三域显示数值正负、宽度5、小数点后精确到三位输出

4、操作符使用说明示例

[[email protected] ~]# awk -v a=2 -v b=1 ‘BEGIN{print "sum="a+b }‘
sum=3
[[email protected] ~]# awk -F: -v a=2 -v b=1 ‘{$3>=5?SUM=a+b:SUM=a+a;print $1,SUM}‘ /etc/passwd
root 4
bin 4
daemon 4
adm 4
lp 4
sync 3
shutdown 3
halt 3
mail 3
uucp 3

5、pattern示例

[[email protected] ~]# awk -F: ‘(NR>=2&&NR<=10){print NR,$1}‘ /etc/passwd
2 bin
3 daemon
4 adm
5 lp
6 sync
7 shutdown
8 halt
9 mail
10 uucp
[[email protected] ~]#
时间: 2024-12-20 17:49:32

awk简单应用详解的相关文章

【转】Asp.Net MVC3 简单入门详解过滤器Filter

原文地址:http://www.cnblogs.com/boruipower/archive/2012/11/18/2775924.html 前言 在开发大项目的时候总会有相关的AOP面向切面编程的组件,而MVC(特指:Asp.Net MVC,以下皆同)项目中不想让MVC开发人员去关心和写类似身份验证,日志,异常,行为截取等这部分重复的代码,那我们可以通过AOP截取实现,而在MVC项目中我们就可以直接使用它提供的Filter的特性帮我们解决,不用自己实现复杂的AOP了. 在Asp.net Mvc

awk指令操作详解

记录与字段 awk一次从文件中读取一条记录,并将记录存储在字段变量$0中.记录被分隔为字段比功能存储在$1,$2,...$NF中,(默认使用空格或指标符为分隔符).内建参数NF为记录的字段数. #输出demo.txt 文件的第1个,第2个,第3个,第4个字段 awk '{print $1,$2,$3,$4}' demo.txt #输出demo.txt 文件整行记录 awk '{print $0}' demo.txt #输出demo.txt 该行的字段个数. awk '{print NF}' de

java网页爬虫简单实例详解——获取天气预报。

[本文介绍] 爬取别人网页上的内容,听上似乎很有趣的样子,只要几步,就可以获取到力所不能及的东西,例如呢?例如天气预报,总不能自己拿着仪器去测吧!当然,要获取天气预报还是用webService好.这里只是举个例子.话不多说了,上看看效果吧. [效果] 我们随便找个天气预报的网站来试试:http://www.weather.com.cn/html/weather/101280101.shtml 从图中可用看出,今天(6日)的天气.我们就以这个为例,获取今天的天气吧! 最终后台打印出: 今天:6日

cut\grep\awk\sed命令详解

cut\grep\awk\sed命令详解 1.cut命令详解及实例 (1)作用:提取文件中指定的列 语法格式:cut  选项  文件名   (2)选项作用:      -d 分隔符     按照指定的分割符进行分割      -f 列号       指定提取第几列      -c 字符范围  不依赖分割符来分割,而是通过字符范围进行字段提取      -b 字节数     以字节为单位进行分割.    (3)cut实际应用案例. 例1:cut的-d和-f选项的使用,列出/etc/passwd里面

linux awk(9)命令详解

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK

AWK用法入门详解

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK

linux中的awk用法入门详解(一)

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK

正则表达式及编程三剑客(grep、sed、awk)命令详解

博文大纲:一.正则表达式(1)正则表达式的定义(2)正则表达式用途1.基础正则表达式(1)grep命令工具2.扩展正则表达式二.文本编辑处理器1.grep命令工具2.sed命令工具3.awk命令工具 一.正则表达式 (1)正则表达式的定义 正则表达式又称正规表达式.常规表达式.在代码中常简写为regex.regexp或RE.正则表达式是使用单个字符串来描述,匹配一系列符合某个句法规则的字符串.简单的说,正则表达式是一种匹配字符串的方法,通过一些特殊符号,实现快速查找.删除.替换某个特定字符串.

awk使用入门详解

一.awk概述 "奥克" awk:报告生成器,格式化打印 把文件中读取到的每一行的每一个字段分别进行格式化,而后进行显示 内部支持变量.条件判断.循环.数组 awk --> new awk --> nawk(收费) GNU awk --> gawk "告克" 二.awk的使用    awk和默认以任意个空白符为分隔符,而cut默认的是制表符,而且只能指定以一个空格符为分隔符 注意:与sed一样使用''不要使用""容易报错 用法格