作者likecyndi ()
站內Programming
標題[問題](awk) pattern與action之間執行的關係
時間Wed May 8 18:04:37 2013
最近在看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
1F:推 izuk:X第一例沒給資料 所以不會動。enter=給空資料 116.59.238.192 05/08 18:52
2F:→ MOONRAKER:你以為awk是幹什麼的… 118.163.12.174 05/08 19:08
3F:→ likecyndi:感謝izuk大的說明~所以加BEGIN之後 是因 211.20.230.25 05/09 08:59
4F:→ likecyndi:為在之前就做了~所以才會印出來嗎?? 211.20.230.25 05/09 08:59
5F:→ likecyndi:那這麼說的話~我按enter之後,就有資料 211.20.230.25 05/09 09:00
6F:→ likecyndi:為什麼script不會結束?? 這裡就不太懂 211.20.230.25 05/09 09:01
7F:→ likecyndi:MOONRAKER大 就目前的認知~處理資料? 211.20.230.25 05/09 09:10
8F:→ MOONRAKER:awk每一個block前面要寫regex pattern 1.34.60.15 05/10 02:45
9F:→ MOONRAKER:符合那個block才會執行!不寫pattern表 1.34.60.15 05/10 02:46
10F:→ MOONRAKER:示每一行都會執行!BEGIN是整個程式開始 1.34.60.15 05/10 02:46
11F:→ MOONRAKER:的時候就要執行,END是最後執行,有這 1.34.60.15 05/10 02:46
12F:→ MOONRAKER:兩個directive的block不需要輸入! 1.34.60.15 05/10 02:47
13F:→ MOONRAKER:你完全不知道awk在幹嘛!找有輸入輸出的 1.34.60.15 05/10 02:49
14F:→ MOONRAKER:範例來看,不要用想的! 1.34.60.15 05/10 02:49
15F:→ likecyndi:感謝 MOONRAKER大的說明,關於awk的部分 211.20.230.25 05/10 12:53
16F:→ likecyndi:會再找相關資料弄懂 感謝 211.20.230.25 05/10 12:53
17F:→ shemale:awk和sed是我寫shell必用工具,最近加perl 115.43.48.81 05/27 06:53
18F:→ shemale:但sed的精神,我仍無法完全掌握 115.43.48.81 05/27 06:54