一、Awk 的两个特殊模式
BEGIN
和 END
,BEGIN
被放置在没有读取任何数据之前,而 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++}}'