记用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的helloworld
下一篇: Aha awk!