
244
|
第七章
假設你有個大型、用逗號分隔的電話簿檔案叫做
addr.txt
。裡頭有 8 個欄位:姓名、頭
銜、電子郵件位址、電話號碼、郵寄地址、城市、州、美國郵遞區號。你想要找出居住
在明尼蘇達州(Minnesota)的所有人的姓名、頭銜和電話號碼。假使全名和頭銜位於開
頭的 2 欄、電話號碼在第 4 欄,而州和郵遞區號在最後 2 欄,那麼下列的 Unix 命令會
將正確的輸出寫到
output.txt
:
13
egrep ",MN,[0-9]{5}([-][0-9]{4})?$" addr.txt | cut -d, -f1,2,4 > output.txt
所以 Unix 工具集是被設計用來讓產出電話簿變得更簡單的嗎?很明顯不是,Unix 工具
集是
基於一個簡單的哲學
:每個工具產生的輸出可以讓其他工具作為輸入使用。
cut
工
具刪減某些欄位或資料列,並將它們貼到輸出。
grep
工具檢查輸入的每一行並且僅列印
出符合樣式的那行輸出。但是這 2 個工具──尤其是和其他 Unix 工具集搭配使用──
可以完成幾乎無限可能的工作。舉例而言,一個系統管理員可能會將它們和一些工具
結合,像是
find
(在檔案系統中尋找檔案)或
last
(告訴你哪些用戶最近在這台機器
上),來完成許多複雜的系統管理工作。
這些工具是一些基本組成部分,是讓 Unix 工具集成為網際網路和商業系統最受歡迎的
作業系統。多年之後,一個為系統工具原則性設計的誕生,在隨著人們每天都會使用的
系統管理文化工具,那些工具的新工具和新用途,隨著時間而演變