相关问题是here。awk初学者试图了解awk“思维过程”
我有两个文件:
文件1:
I am a cat
I am a dog
I am a dog
I am a cat
I am a dog
文件2:
line 1
line 2
在执行了:
awk '/cat/{getline <"file2"; print};1' file1
line 1
line 1
I am a dog
I am a dog
line 2
line 2
I am a dog
我期待:
line 1
I am a cat
I am a dog
I am a dog
line 2
I am a cat
I am a dog
我在上面的代码AWK的认识:从文件1
读行,如果cat
从file 2
存在印刷生产线和1
末告诉awk也从file 1
打印线。如果没有找到cat
,awk将从file 2
中打印任何内容,但仍将打印file 1
的相应行。
看上去正在发生的是awk读取file 1
的第一行,找到cat
并打印出第一行file 2
。然后awk interperets 1
作为一个真实的给定的条件,并再次打印从file 2
的第一行。当awk没有找到cat
它作为一个真正的1
interperates从file 1
打印?
别的东西,我发现有意思的是,当我运行此:
awk '/cat/{getline this<"file2"; print this};1' file1
line 1
I am a cat
I am a dog
I am a dog
line 2
I am a cat
I am a dog
这是怎么回事?感谢您的时间。
希望这是一个学术问题,你并没有考虑在你的问题中实际使用任何脚本。如果是,请参阅http://awk.freeshell.org/AllAboutGetline。 –
感谢@Ed Morton。不是真的把它用于任何事情,只是学习。 – thecomebackid