关于awk 中如何使用 if条件判断句
文章目录 这个是我自己写的 全部关于 awk学习的目录导航 ,感兴趣的可以看看。 首先,大家都知道 if 条件判断句 吧,这个就算不知道 也很好理解吧:无非就是条件成立则执行对应的代码、条件不成立则不执行! 在 awk 中,我们也是可以搭配 ...
文章目录
这个是我自己写的 全部关于 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
更多推荐
所有评论(0)