回覆列表
  • 1 # 菠蘿小仙女影紫薄荷微

    getline函式呼叫時,awk將會把下一條記錄讀入賦值給$0,因此相當於已經跳到下一行了。

    你的程式上面那個,由於在awk中有多次getline,因此一開始把記錄定位到第二行,即第一個檔案,然後每呼叫一次"md5sum"name1|getline;記錄就跳到了下一行,輸出是不會重複的。

    而下面的那個程式,沒有多次getline呼叫,awk按行掃描,每次會把當前行的檔名賦值給name2,同時name1又記錄了上一次的檔名,因此出現了test01兩次,test02兩次

    事實上,輸出和掃描行的對應關係是:

    先在BEGIN段跳過兩行,當前行為test,name賦值得到test

    然後逐行掃描,當前掃描行是test01時,輸出了testtest01

    當前掃描行是test02時,輸出了test01test02

    當前掃描行是test02時,輸出了test02test03

    所以一共出現6行,中間有重複

  • 中秋節和大豐收的關聯?
  • 3週歲的小孩能聽到卻還不會說話,請問是什麼原因?