相關問題是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