文章目录

 

这个是我自己写的 全部关于 awk学习的目录导航 ,感兴趣的可以看看。

 


 
       首先,大家都知道 if 条件判断句 吧,这个就算不知道 也很好理解吧:无非就是条件成立则执行对应的代码、条件不成立则不执行!

       在 awk 中,我们也是可以搭配 if条件判断句 来使用:
在这里插入图片描述
千万要注意格式!!!!非常重要!!!!

        在编程语言中,if 还有 “if…else…” 或 “if…else if…else” 这样的语法,当然 awk 中也有这样的用法:

首先看一下他们的语法吧:

1、这是 “if…else…” 的语法
 
if (条件)
{
语句1;
语句2;

}
else
{
语句1;
语句2;

}
 
 
2、这是 “if…else if…else” 的语法:
 
if (条件1)
{
语句1;
语句2;

}
else if(条件2)
{
语句1;
语句2;

}
else
{
语句1;
语句2;

}

举例:关于 “if…else…”
这个语法的意思就是:if 条件匹配则执行…反正执行…
在这里插入图片描述
然后结合一下前面学过的 “格式化输出” 哈哈哈哈 学以致用嘛!
在这里插入图片描述举例:关于 “if…else if…else”
在这里插入图片描述
这里本来是打算用截图的,但是字太小了,不方便大家查看,这里就使用代码块了:

root@zhengzelin:~# 首先 你要知道 “if...else if...” 这个语法代表什么意思! 这里面包括几个条件?我们来看一个例子:

root@zhengzelin:~# printf "%-10s\t%-10s\n" 姓名 年龄 张三 10 李四 20 王五 80 > aaa 
root@zhengzelin:~# cat aaa 
姓名    	年龄    
张三    	10        
李四    	20        
王五    	80        

root@zhengzelin:~# 使用 格式化 输出 到一个文件中 ,作为我们使用 if 语法的例子;
说太多不如举一个例子,这样更加方便查看和理解:

root@zhengzelin:~# awk 'BEGIN{FS="\t"} {if($2<=18) {printf "%-10s\t%-10s\n",$1," 是未成年"} else if($2>18 && $2<=60) {printf "%-10s\t%-10s\n",$1," 是成年人"} else{printf "%-10s\t%-10s\n",$1," 是老年人"}}' aaa
姓名        	 是老年人     
张三        	 是未成年     
李四        	 是成年人     
王五        	 是老年人     

root@zhengzelin:~# 但是,你看这个输出结果,虽然是格式化的,但是第一排是什么鬼?姓名是老年人?这时候我们需要使用 NR 内置变量了:

root@zhengzelin:~# awk 'BEGIN{FS="\t"} NR!=1 {if($2<=18) {printf "%-10s\t%-10s\n",$1," 是未成年"} else if($2>18 && $2<=60) {printf "%-10s\t%-10s\n",$1," 是成年人"} else{printf "%-10s\t%-10s\n",$1," 是老年人"}}' aaa
张三        	 是未成年     
李四        	 是成年人     
王五        	 是老年人     

如果你不懂 printf 格式化输出 或者 NR 等内置变量,建议您阅读前面的文章呢!
本文章题目开头有 awk 学习导航,学习应该脚踏实地 一步一步来!

虽然这样看的也不是很方便,但是最起码比那个图片要舒服!

然后我再结合上篇学的 next 的用法:
在这里插入图片描述
        使用 next 可以加快 脚本的执行速度!虽然结果出来了 ,但是 我也是对 next 理解的不是很清楚,如果哪位大佬有自己的见解,可以教一下我吗?

 
上一篇:awk 中 next 的用法
下一篇:awk 中的 循环语句:for、while…跳出循环:continue、break

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐