神级命令awk之30分钟速成必看

重点提要

  1. 动做的左花括号必须与它的模式在同一行; 而剩下的部分, 包括右花括号, 则能够出如今下面几行;
  2. 若是一个表达式拥有一个数值形式的值, 而运算符要求一个字符串值, 那么该数值会自动转换成字符串, 相似地, 当运算符要求一个数值时, 字符串被自动转换成数值;
  3. 在一个关系比较中, 若是两个操做数都是数值, 关系比较将会按照数值比较进行; 不然的话数值操做数会被转换成字符串, 再将操做数按字符串的形式进行比较两个字符串间的比较以字符为单位逐个相比, 字符间的前后顺序依赖于机器的字符集(大多数状况下是ASCII字符集);
  4. 把一个字符串赋值给内建变量FS 就能够改变字段分隔符. 若是字符串的长度多于一个字符, 那么它会被当成一个正则表达式. 当前输入行中, 与该正则表达式匹配的最左, 最长, 非空且不重叠的子字符串变成字段分隔符;

正则表达式

  1. 正则表达式的元字符包括: ^ $ . [ ] | ( ) * + ?
  2. 一个基本的正则表达式包括下面几种:
    一个不是元字符的字符, 例如A, 这个正则表达式匹配的就是它自己.
    一个匹配特殊符号的转义字符: t 匹配一个制表符(见表2.2).
    一个被引用的元字符, 例如*, 按字面意义匹配元字符.
    ^ 匹配一行的开始.
    $ 匹配一行的结束.
    . 匹配任意一个字符.
    一个字符类: [ABC] 匹配字符A, B 或C.
    字符类可能包含缩写形式: [A-Za-z] 匹配单个字母.
    一个互补的字符类: 1 匹配任意一个不是数字的字符.

【注意】使用gsub时,/也须要转义正则表达式

使用代码片断

  • 有效浮点数验证
BEGIN {
        sign = "[+-]?"
        decimal = "[0-9]+[.]?[0-9]*"
        fraction = "[.][0-9]+"
        exponent = "([eE]" sign "[0-9]+)?"
        number = "^" sign "(" decimal "|" fraction ")" exponent "$"
    }
    $0 ~ number

  1. 0-9
相关文章
相关标签/搜索