欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

记用AWK进行for循环查询文本时候的问题

程序员文章站 2022-07-12 15:18:33
...

今天刚刚接触awk,就想着来实验一下,当学到for循环的时候,我就简单的操作了一下

1.txt 文本如下

1 haha  heihei  houhou
2 yannie2 yannie3 yannie4
3 hilary2 hilary3 hilary4
4 czl2 czl3 czl4
5 wo2 shi3 ni4

当用按以下方法写能输出

awk '{ for(i = 0;i<5;i++) print $i }' 1.txt

输出结果为:

1 haha  heihei  houhou
1
haha
heihei
houhou
2 yannie2 yannie3 yannie4
2
yannie2
yannie3
yannie4
3 hilary2 hilary3 hilary4
3
hilary2
hilary3
hilary4
4 czl2 czl3 czl4
4
czl2
czl3
czl4
5 wo2 shi3 ni4
5
wo2
shi3
ni4

即先输出$0,即当前行文本内容 然后输出$1 这一行第一列的内容,以此类推,输出没有问题,由于其默认以空格为分隔符,要想设置以回车为分隔符的话,可以用-F选项 -F"\n"

但是其实我写的时候第一次是有错误的
我第一次写的如下:

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

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

它输出了5行空行

这样写

wk 'BEGIN{ for(i = 0;i<5;i++)} END{print $i }' 1.txt

它输出了一行空行

那这到底是为什么呢???

因为在awk的BEGIN中其进行的是初始化,在这一步中,已经将i初始化为4,也就是最后一行的最后一个空列,也就是回车符,所以就失败了~~

你可以试着将前面不能输出awk语句中i的最大值改小一点,就会发现输出内容了,不过当然与我们的初衷向背驰啦~

所以说还是要细心啦!!!

相关标签: awk

上一篇: awk的helloworld

下一篇: Aha awk!