linux 中 awk 中 geline函数的用法及其与next的区别

 

001、首选测试awk中getline这个动作 做了什么

a、

复制代码
[root@pc1 test1]# ls
a.txt
[root@pc1 test1]# cat a.txt          ## 测试数据
01 02
03 04
05 06 kk
07 08
09 10
11 12
13 14
[root@pc1 test1]# awk '{if($0 ~ /kk/) {getline} else {print $0}}' a.txt
01 02                                ## 输出结果表明,getline动作跳过了匹配行以及匹配行的下一行
03 04
09 10
11 12
13 14
复制代码

 

b、连续两个getline动作

复制代码
[root@pc1 test1]# ls
a.txt
[root@pc1 test1]# cat a.txt        ## 测试数据
01 02
03 04
05 06 kk
07 08
09 10
11 12
13 14
[root@pc1 test1]# awk '{if($0 ~ /kk/) {getline; getline} else {print $0}}' a.txt
01 02                              ## getline连续跳过了匹配行及其后的两行
03 04
11 12
13 14
复制代码

 

c、getline这个动作做了什么?

跳过当前行以及下一行。

 

002、与next的区别

a、

复制代码
[root@pc1 test1]# ls
a.txt
[root@pc1 test1]# cat a.txt
01 02                     ## 测试数据
03 04
05 06 kk
07 08
09 10
11 12
13 14
[root@pc1 test1]# awk '{if($0 ~ /kk/) {next} else {print $0}}' a.txt
01 02                     ## 可以观测到next跳过了匹配行
03 04
07 08
09 10
11 12
13 14
复制代码

 

b、连续给与两个next

复制代码
[root@pc1 test1]# ls
a.txt
[root@pc1 test1]# cat a.txt
01 02                                     ## 测试数据
03 04
05 06 kk
07 08
09 10
11 12
13 14
[root@pc1 test1]# awk '{if($0 ~ /kk/) {next; next} else {print $0}}' a.txt
01 02                                     ## 两个next跟一个next的效果相同
03 04
07 08
09 10
11 12
13 14
[root@pc1 test1]# awk '{if($0 ~ /kk/) {next; next; next} else {print $0}}' a.txt
01 02                                     ## 效应一样
03 04
07 08
09 10
11 12
13 14
复制代码

 

c、next的作用

跳过匹配行;而且只对匹配行起作用,不管有多少个next;

 

003、getline与next的区别

getline跳过匹配行及下一行,并且可以对连续的下一行起作用;

next跳过当前行,且不管有多少个next仅对当前行有作用。

 

posted @   小鲨鱼2018  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-02-23 python中实现列表倒序排列
2021-02-23 python中如何清空列表
2021-02-23 python中提取列表的奇数元素和偶数元素
2021-02-23 python中如何提取列表的前几个元素和后几个元素
点击右上角即可分享
微信分享提示