【awk】的高级应用-for-while等

一、Awk 的两个特殊模式

BEGINENDBEGIN 被放置在没有读取任何数据之前,而 END 被放置在所有的数据读取完成以后执行。
体现如下:
BEGIN{}: 读入第一行文本之前执行的语句,一般用来初始化操作
{}: 逐行处理
END{}: 处理完最后以行文本后执行,一般用来处理输出结果

实例:统计文本总字段个数
文本内容:

hui hui XX
XX
XX ni Xx

代码:

awk 'BEGIN{i=0} {i+=NF} END{print(i)} ' awk_test.txt
# 输出:
7

awk高级应用

if单分支语句

统计某文件中的第二列小于150的行的数量

cat awk_test.txt | awk -F ' ' 'BEGIN{i=0} {if($2<150) i++ fi} 
END{print(i)}'

if双分支语句:if-else

统计某文件中的第二列小于150的行的数量和大于等于150的行的数量

cat awk_test.txt | awk -F ' ' 'BEGIN{i=0;j=0} {if($2<150) {i++} 
else {j++} } END{print(i,j)}'

for循环

生成1-5的序列

awk 'BEGIN{for(i=1;i<=5;i++) {print(i)} }'

while循环

awk 'BEGIN{i=1;while(i<3) {print(i);i++}}'

猜你喜欢

转载自blog.csdn.net/weixin_41687289/article/details/88876143