awk匹配模式

awk是由匹配模式和动作组成:

#### 1-BEGIN和END两张特殊类型模式,没有针对输入进行测试
BEGIN
END
#### 2 BEGINFILE和ENDFILE是附加的特殊模式,它们的主体在读取每个命令行输入文件的第一条记录之前以及在读取每个文件的最后一条记录之后执行。 在BEGINFILE规则内,如果文件成功打开,ERRNO的值将为空字符串。 否则,文件存在一些问题,代码应使用nextfile跳过它。 如果没有这样做,gawk会对无法打开的文件产生通常的致命错误。
BEGINFILE
ENDFILE
#### 3 正则表达式模式在输入记录与正则表达式匹配时候执行关联语句,其表达形式与egrep语句相同
/regular expression/
relational expression
#### 4 &&逻辑与,||逻辑或 !逻辑非 ?:与c一样三目运算
pattern && pattern
pattern || pattern
pattern ? pattern : pattern
(pattern)
! pattern
#### 5 范围模式:它匹配与pattern1匹配的的所有输入记录,指导匹配patteran2的记录
pattern1, pattern2

大部分情况下都是按照这一个思路在编写awk的代码,写出这样的代码:

cat test | awk 'BEGIN {print "SUM:"} {print $1} END {print "END SUM!!!"}'

实际上awk的语法应该是这样的:

awk ‘pattern{action}pattern{action}…’ file

会有多个模式匹配和action,每个模式匹配都会依次执行。

匹配表达式

image.png

image.png
hello  123    123
wang   100    bcd
zhng   180    abc
abc
 awk '/bc/{$2=$2+ 100}  NR %2==0 {print $0} ' a.log
wang 200 bcd
abc 100
awk '/bc/{$2=$2+ 100}  NR %2==0 {print $0} 1' a.log
hello  123    123
wang 200 bcd
wang 200 bcd
zhng 280 abc
abc 100
abc 100

最后的1表示永真,对应默认的action行为: {print $0}

awk '$1~/wan/{$2=$2+ 100}  NR %2==0 {print $0} ' a.log
wang 200 bcd
abc

~表示正则为真,

image.png
image.png
image.png
image.png
image.png
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • awk介绍awk变量printf命令:实现格式化输出操作符awk patternawk actionawk数组aw...
    哈喽别样阅读 1,584评论 0 4
  • 一.AWK说明 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个...
    __一蓑烟雨__阅读 236评论 0 0
  • 一. AWK 说明 awk的处理文本和数据的方式:它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并...
    西华子阅读 946评论 0 4
  • 第一篇 awk简介与表达式实例 一种名字怪异的语言 模式扫描和处理,处理数据和生成报告。 awk不仅仅是linux...
    ___n阅读 6,989评论 0 23
  • 春暖花开,万物复苏时,感觉少女的文艺小清新病又犯了,想养点小植株来丰富下生活,便网购了点小种子自己种植(某宝搜索...
    努力的颜控小仙女阅读 1,289评论 10 3