文本过滤--awk 1

学awk,首先要搞清什么是域,如下图,其中:是分隔符

文本过滤--awk 1_第1张图片

同时记住一下3点:

1、确保整个awk命令用单引号括起来

2、确保命令内所有引号成对出现

3、确保用花括号括起动作语句,用圆括号括起条件语句

先看一下我来做示范的文本

1、

-F参数指定分隔符,默认的是空格。$1代表第一个域,$2代表第二个,以此类推。$0代表所有的域。

awk并不会改变源文件,如果要保存输出的内容可以重定向一下。

2、打印头,尾信息

文本过滤--awk 1_第2张图片

当然BEGIN和END可以拿出来单独的使用,即只有BEGIN没有END,或者只有END没有BEGIN。BEGIN和END里面也可以是其他的内容不单单是个print动作(第一行最后的\只是转义字符,用来换行)

3、条件匹配

这里又在原来的test文件里添了点内容以方便做示范

文本过滤--awk 1_第3张图片

~就是要匹配正则表达式,!~就是不匹配正则表达式

可以看到文件第二行和第四行都有25,但第四行是225,那么怎么准确的匹配到25呢?

如果是!=就是不等于

当然还可以设<,<=,>=

设置大小写

或关系

同时满足两个关系才符合要求,只要满足一个要求即可

文本过滤--awk 1_第4张图片

创建新的输出域

你可能感兴趣的:(shell,awk)