awk的一些基础总结

255阅读 0评论2008-10-15 lQR2h3N
分类:

介绍:

--可以从文件或字符串中基于指定规则浏览和抽取信息;

--是一种自解释的编程语言;

--三种方式调用awk

  1、行方式

     awk [-F filed-spearator] ‘command’ input-files[-F域分隔符]是可选的,因为awk使用空格作为缺省的域分隔符,因此如果要浏览域间有空格的文本,不必指定这个选项,但如果要浏览诸如passwd文件,此文件各域以冒号作为分隔符,则必须指明-F选项)

  2awk脚本

     所有awk命令插入一个文件,并使awk可执行,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它;

  3awk命令插入一个单独文件

     Awk –f awk-script-file input-files-f选项指明在文件awk_script_file中的awk脚本,input_files是使用awk进行浏览的文件名)

-- awk脚本由各种操作和组成;

--模式和动作

   1、模式部分决定动作语句何时触发及触发事件(BEGIN,END(使用BEGIN语句计数和打印头,BEGIN语句使用在任何文本浏览动作之前,之后文本浏览动作依据输入文件开始执行,END语句用来在awk完成文本浏览动作后打印输出文本总数和结尾状态标志,如果不指明模式,awk总是匹配或打印行数)

2、动作对数据进行处理,放在大括号{}内指明。(print

--分隔符、域和记录

1awk执行时,其浏览域标记为$1,$2……$n,这种方法称为域标识,$0为所有域,利用逗号做域分隔。

2、注意执行时不要混淆符号$shell提示符$,他们是不同的。

-- awk中的特殊元字符:+,?

--匹配操作符:~,!~

-- cat score.txt|awk ‘$0~/218.79.131.96/’

--awk ‘{if($1==”218.97.121.96”)print$0}’ score.txt

   3、有两种方式保存shell提示符下awk脚本的输出,最简单的方式是使用输出重定向符号>文件名,还有一种方法是使用tee命令。

模式和动作的例子:

#awk –F: ‘BEGIN {print “name   path\n------------”}{print $1”\t”$7} END {print “this is password file”}’ /etc/passwd

4、在使用awk碰到错误时,可从方法进行判断:确保整个awk命令用单引号括起来、确保命令内所有引号成对出现、确保用花括号括起动作语句,用圆括号括起条件语句、awk按照花括号来解释语法。

--awk中正则表达式及其操作(这里的正则表达式用//括起来):

1、元字符:+和?只适用于awk而不用于grepsed+匹配一个或多个字符;?匹配模式出现频率。

2、条件操作符:为使一域号匹配正则表达式,使用符号“~”后紧跟正则表达式,也可以使用if语句,awkif语句后面的条件用()括起来。

$awk –F :‘{if($1~/brown/) print $0}’ passwd

$awk –F : ‘$3==20000{print $0}’ passwd(精确匹配)

   $awk –F : ‘$3!~ /20000/’passwd (不匹配)

$awk –F : ‘$0~/(yellow|brown)/’grade.txt

$awk –F : ‘{if($1==”root” && $4==”0”) print $0}’passwd

--awk有许多内置变量用来设置信息,这些变量可以被改变;FILENAMEawk浏览的文件名;FS:设置输入域分隔符,等价于命令行-F选项;NF:浏览记录的域个数;NR:已读的记录数;OFS:输出域分隔符)

$awk –F: ‘{print NR,NF,$0}{if ($1~/^q…../ && $4 ~/[0-9]\{0,6\}/)} ’passwd

以上是本人总结的一点awk的语法和功能,很不全面,不过我觉得这些已经够目前所用了。。。欢迎大家批评指正。



--------------------next---------------------

上一篇:手工清剿系统“寄生虫”——Dll木马(续)
下一篇:shell中引号的区别