awk先看这里

来源:互联网 发布:南京大学网络教育安徽 编辑:程序博客网 时间:2024/04/29 06:08

awk '模式'
awk '{action}'
awk '模式{action}'       ( awk -F. '$1=="192"{print $0}'  )
模式:是由某种类型的表达式组成,表达式中没有出现if,但是计算时却暗含if这个词。
所有的操作都在{}中,如果没给出,则采用默认操作,打印包含模式的行。

awk 工作原理
1) awk 使用一行作为输入,并将这一行赋值给内部变量$0
2) 行被空格分解成字段,每个字段存储在已经编号的变量中,从$1开始,多大100字段。
3) awk如何知道空格是用来分隔字段的呢?因为有另外一个内部变量FS用来确定字段的分隔符。初始化时,
   FS被默认为空格(制表符和空格)。如果需要使用其他的字符,FS重新复制就行了, 用 -F 改变分隔符 awk -F: '{xxx}'

 

 

1) 每次处理完一天记录NR的值就加1
2) awk在NF中保存记录的字段数
3) 对awk而言,正则表达式是置于两个正斜杠之间的模式。
4) 范围模式
   例子: awk '/Tome/,/linwen/'
   从Tom首次出现到linwen首次出现的所有行,如果没linwen,就一直到文件。
   在linwen之后又出现Tome则从开头开始。
5) BEGIN 模式在读入数据行之前执行,后面跟一个操作块。 BEGIN {print "PGM begin"}
6) END 模式在处理完所有行之后处理,  ( awk -F. 'BEGIN{print "begin"} $1=="192"{print $0} END{print "END"}'   )
7) 重定向:
    输出重定向,重定向的目标文件必须用双括号括起来。如 awk '{print $0 > "out.file"}'
8) 管道: 如果在awk中打开了管道,就必须先关闭它才能打开另一个管道,管道符右边命令被
           双括号括起来。如 awk '{print $1,$2 | "sort -r +1"}'
           关闭 close("sort -r +1")

9) awk '{print $0}'
     awk -F. '{print $1}'   ' 前面有个空格

10) awk -F. 'BEGIN{print "begin"} $1=="192"{print $0;print length($0)} END{print "END"}'    ; 为分隔符,