兩道shell指令碼的程式設計題(sed與awk)

oneweaklight發表於2011-05-28
今天去面試一家公司的運維實習生,一個經理面的我,沒問什麼問題,就讓我翻譯國外網站上關於雲端計算資料庫的文章,翻譯了一張紙後,出了兩道shell指令碼的題,悲劇的是,全部關於sed和awk的,這兩個本來就複雜,我又沒怎麼練習,所以胡亂寫了一通,回來後看了下書,會了,在此寫下,以反思與記錄!
1、a.txt中有一行“abcdef.g “,刪除其中的g後面的空格
解:# echo "abcdef.g " > a.txt && cat -A a.txt | sed 's/ $//g' | cat -A
2、利用ifconfig提取IP 192.168.1.100中的前兩個欄位(結果為192.168)
分析:ifconfig輸出的為 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
解:#/sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g' |
> gawk -F. '{ print $1"."$2}'
總結:沒有好好學習shell指令碼,sed與awk很複雜,得多練習才能掌握!要是吧print $1"."$2修改為print $1"."$2"."$3"."$4 這樣可儲存為一個disIP.sh的指令碼,下次執行就可以直接顯示主機的IP地址了,很方便的。
再說兩句,今天那給我出題的人同時問我什麼事nginx,我當時以為是一個linux發行版,但實際上不是,當時他也沒多問,我今天回來是用手機上網時突然爆出個bad gateway not found/ nginx,我當時以為手機網頁後臺是linux?但又想不對啊,一般網頁報錯都是http伺服器(apache)報錯啊,說明這個nginx也是個http伺服器,於是檢視wikipedia,理解了,以下來源於wikipedia中關於nginx的解釋:
nginx(發音同engine x)是一款由俄羅斯程式設計師Igor Sysoev所開發輕量級的網頁伺服器、反向代理伺服器以及電子郵件
(IMAP/POP3)代理伺服器。起初是供俄國大型的入口網站及搜尋引擎Rambler(俄語:Рамблер)使用。此軟體BSD-like協議
下發行,可以在UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等作業系統中執行。
nginx相較於Apache、lighttpd具有佔有記憶體少,穩定性高等優勢,並且依靠併發能力強,豐富的模組庫以及友好靈活的配置而聞名。
wikipedia中關於lighttpd的解釋:
lighttpd(發音為lighty)是一套開放原始碼的網頁伺服器,以BSD許可證釋出。相較於其他的網頁伺服器,lighttpd僅需少量的記憶體及CPU資源即可達到同樣的效能。
wikipedia中關於apache的解釋:
Apache HTTP Server(簡稱Apache)是Apache軟體基金會的一個開放原始碼的網頁伺服器,可以在大多數電腦作業系統中噝校?伸鍍淇縉教ê桶踩?訹2]被廣泛使用,是最流行的Web伺服器端軟體之一。它快速、可靠並且可透過簡單的API擴充,將Perl/Python等直譯器編譯到伺服器中。
後記:發現自己不懂的還是很多,主要是需要懂得太多了啊!
------------------------------------
weaklight @ 2011/05/28/0:42
------------------------------------
[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25067344/viewspace-1050459/,如需轉載,請註明出處,否則將追究法律責任。

相關文章