[問題](awk) pattern與action之間執行的關係

看板Programming作者時間11年前 (2013/05/08 18:04), 編輯推噓1(1017)
留言18則, 4人參與, 最新討論串1/1
最近在看awk的資料 知道是由pattern + {action} 去組合而成 接著寫script去執行以下程式 echo a awk 'BEGIN {printf("%s\n", "abc")}' echo b awk '{printf("%s\n", "abc")}' echo c 只會印出 a abc b 就停住,要按enter 才會印出第二次的abc,每按一次印一次script不會結束 永遠印不出c 接著只要把 awk '{printf("%s\n", "abc")}' 改成 echo 1 | awk '{printf("%s\n", "abc")}' 就會印出 a abc b abc c 並且跳出script 想請問一下,是什麼原因造成的,差異點在哪?? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.20.230.25

05/08 18:52, , 1F
X第一例沒給資料 所以不會動。enter=給空資料
05/08 18:52, 1F

05/08 19:08, , 2F
你以為awk是幹什麼的…
05/08 19:08, 2F

05/09 08:59, , 3F
感謝izuk大的說明~所以加BEGIN之後 是因
05/09 08:59, 3F

05/09 08:59, , 4F
為在之前就做了~所以才會印出來嗎??
05/09 08:59, 4F

05/09 09:00, , 5F
那這麼說的話~我按enter之後,就有資料
05/09 09:00, 5F

05/09 09:01, , 6F
為什麼script不會結束?? 這裡就不太懂
05/09 09:01, 6F

05/09 09:10, , 7F
MOONRAKER大 就目前的認知~處理資料?
05/09 09:10, 7F

05/10 02:45, , 8F
awk每一個block前面要寫regex pattern
05/10 02:45, 8F

05/10 02:46, , 9F
符合那個block才會執行!不寫pattern表
05/10 02:46, 9F

05/10 02:46, , 10F
示每一行都會執行!BEGIN是整個程式開始
05/10 02:46, 10F

05/10 02:46, , 11F
的時候就要執行,END是最後執行,有這
05/10 02:46, 11F

05/10 02:47, , 12F
兩個directive的block不需要輸入!
05/10 02:47, 12F

05/10 02:49, , 13F
你完全不知道awk在幹嘛!找有輸入輸出的
05/10 02:49, 13F

05/10 02:49, , 14F
範例來看,不要用想的!
05/10 02:49, 14F

05/10 12:53, , 15F
感謝 MOONRAKER大的說明,關於awk的部分
05/10 12:53, 15F

05/10 12:53, , 16F
會再找相關資料弄懂 感謝
05/10 12:53, 16F

05/27 06:53, , 17F
awk和sed是我寫shell必用工具,最近加perl
05/27 06:53, 17F

05/27 06:54, , 18F
但sed的精神,我仍無法完全掌握
05/27 06:54, 18F
文章代碼(AID): #1HYYCtoo (Programming)