[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] [已解决]gawk中的getline函数是如何循环文本的?

本帖最后由 FOR 于 2011-10-4 23:14 编辑

gawk中的getline函数是如何循环文本的
下例代码,为何只循环 b.txt 一次,按说应该循环3次才对呀?要如何才能循环3次
代码1
  1. BEGIN {
  2.     for (i=1;i<=3;i++) {
  3.         print i,"i"
  4.         while (getline<"b.txt"){print $0}
  5.     }
  6. }
复制代码
下面代码为何会把b.txt的最后一行多显示一次?
代码2
  1. gawk "{while(getline<\"b.txt\"){print $0}}{print}" a.txt
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 2# awk

这样改和我那个没什么区别啊?显示结果也是一样,只是多显示了个文件名
显示结果
  1. a.txt:a1
  2. b.txt:bb1
  3. b.txt:bb2
  4. b.txt:bb3
  5. bb3
  6. a.txt:a2
  7. a2
  8. a.txt:a3
  9. a3
复制代码

TOP

哦,代码2 我理解了。。。

TOP

回复 6# awk

多谢多谢,还是需要人指点,我之前想了很久实在想不明白才发帖的,钻进牛角尖了。
第一个问题呢?期待您的解答。

TOP

回复 8# awk

搜了下
  1. close(filename) 将输入或输出的档案 filename 关闭。
复制代码
可是如何理解?
难道说 getline 在循环 b.txt 的时候是把该文件打开了的,在未关闭之前无法重新循环?
顺便在问句,gawk 中有暂停的语句吗?

TOP

回复 10# awk

嗯,多谢!

TOP

返回列表