awk 的命令框架

awk通过BEGINEND实现在文本处理器前和处理后依然可以执行一些处理。

awk的命令框架如下

BEGIN{ commands }
/pattern/{ commands }
/pattern/{ commands }
...
END{ commands }

其中,/pattern/为正则表达式或逻辑表达式。

BEGIN{}字段实现在文本处理前准备好相关的内容;END{}字段实现在文本处理后继续对处理结果进行分析,例如可以在/pattern/{}字段中将对文本的处理保留至数组,最后在END{}字段中对数组进行进一步的处理。

案例

对文本中的某一列求均值

n=3
awk -v i=$n '{sum=sum+$i;}END{print sum/NR;}' input.txt

输出特定行

awk 'NR==3{print $0}' input.txt
awk '(NR<3) || (NR>6){print $0}' input.txt
awk '(NR<10) && (NR>6){print $0}' input.txt

输出正则表达式匹配行

# 输出非#开头的行
awk '/^[^#]/ {print $0}' input.txt
# 输出以字母开头的行
awk '/^[a-zA-Z]/ {print $0}' input.txt
# 输出以!结尾的行
awk '/!$/ {print $0}' input.txt
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容