[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
先看代码2,改成这样你能理解吗?
  1. gawk "{print \"a.txt:\"$0;while(getline<\"b.txt\"){print \"b.txt:\"$0}}{print}" a.txt
复制代码
如果还是想不清楚,我再解释。

TOP

回复 3# FOR


顶楼的代码2是这样执行的:

开始的时候读a.txt的第一行,$0=a1
进入while循环:
    读b.txt的第一行,$0=bb1,print $0输出bb1
    读b.txt的第二行,$0=bb2,print $0输出bb2
    读b.txt的第三行,$0=bb3,print $0输出bb3
退出while循环,因为while最后一次循环把$0设置成了bb3,所以print输出bb3
读a.txt的第二行,$0=a2,print输出a2
读a.txt的第三行,$0=a2,print输出a3

TOP

回复 4# FOR


我就说嘛,想一会就明白了

TOP

回复 7# FOR
  1. gawk "BEGIN{for(i=1;i<=3;i++){print i,"i";while(getline<\"b.txt\")print $0;close(\"b.txt\")}}"
复制代码
1

评分人数

    • FOR: 多谢!技术 + 1

TOP

回复 9# FOR


可以这样想象一下:
getline在逐行读文件的时候,有个指针指向当前处理的行。第一for循环里面,while把整个文件读完了,指针指向文件尾部。第二个for循环的时候,会认为文件真读完了。
要想重复读,需要先close,然后再从头getline

TOP

返回列表