AWK学习笔记-2.1Pattern属性

来源:互联网 发布:淘宝 手环 编辑:程序博客网 时间:2024/05/22 03:15

Pattern

  1. BEGIN {statements}
    读取所有输入行之前执行

  2. END {statements}
    所有行输入之后执行

  3. expression {statements}
    满足条件的每一行执行

  4. /regular expression/ {statements}
    匹配执行

  5. compound pattern {statements}
    条件执行 &&(AND) ||(OR) !(NOT)

  6. pattern1, pattern2 {statements}

BEGIN END

如果出现多个,会顺序执行

  • BEGIN可以由FS设置分隔符
  • 可以通过设置print参数设置输出格式

    BEGIN{FS="\t"  printf()}

expression {statements}

比较符号:

小于 小于等于 等于 不等于 大于等于 匹配 不匹配 < <= == != >= ~ !~

字符串之间的比较按照ASCII进行。
* $0 >= "x" 以x及x之后字母开头的文字

/regular expression/ {statements}

字符串的匹配检测。

  • /regexpr/
  • expression ~ /regexpr/
  • expression !~ /regexpr/

/Asia/ 会找出含有Asia的字符串。也是$0 ~/Asia/的简写

$4 ~/Asia/ 找出第四列种含有Asia的行
$4 !~/Asia/ 找出第四列种不含有Asia的行

regular expression正则表达式

正则表达式的详细内容可见网上参考书籍
* 常用元字符:
\ 特殊含义\t或者转义字符
^ 开头
$ 结尾
. 单个字符
[ABC] 匹配A,B,C
[A-Z] 匹配A-Z
[^0-9] 不含有数字的字符
A* 0 or more A
A+ 1 or more A
A? null string or A

  • ^$例子

    ^C 以C开头的字符串
    C$ 以C结尾的字符串
    ^C$ 包含C的字符串
    ^.$ 长度为1的字符串
    ^…$ 长度为3的字符串
    … 匹配长度>=3的字符串
    \.$ 匹配字符串末尾的点号.

  • ^^的使用,开头和排除

    ^ [ABC] 以A,B,C开头的字符串
    ^[\^ABC] 以除去A,B,C开头的任何字符串
    [\^ABC] 匹配除去A,B,C的任意字符

  • 常用的转义字符

    \b 空格
    \f 换页符
    \n 换行符
    \r 回车,回到行首,覆盖之前的字符
    \t 制表符
    \ddd 八进制
    \ 转义输出符号

|| && !

逗号,

/1/,/2/ 从含有1开始的字符串开始匹配,出现2之后匹配结束

加到行首 awk ‘{$1=”RR”$1;print}’ testa.txt
加到行尾 awk ‘{$NF=$NF”RR”;print}’ testa.txt
使用脚本命令 awk -f

0 0