2007年10月11日 星期四

本月學習重點:SED & AWK

練習題:
http://www.csie.ncnu.edu.tw/%7Eklim/unix-intro/exer-2.html
1.寫一個 sed 的 script file, 使以下二行指令的執行效果類似.
$ ps -ef | sed -f your-sed-script
$ ps -ef -o user,pid
解答:
#your-sed-script
s/\(................\).*/\1/
另解:
#(一個字串+一段空白+再一個字串)+一堆字串→\1:
#印出第一個group,即為所求。
#,在column name 為靠左對齊時,格式會有錯誤(e.g:cygwin)
s/\([^ ]* *[^ ]*\).*/\1/

ps.其實用awk就可以用很trivial的解法
ps -ef | awk '{print $1,$2}'
#簡單到不行,但會被人家說殺雞用牛刀。

---
AWK應用(系統管理者愛用的工具?)
1.從/etc/passwd檔案中,用 awk找出pid 不連續的區段。
2.找出沒有密碼的使用者
awk -F: 'NF > 1 && amp; $1 !~ /^[#+-]/ && $2=="" {print $0}'
3.列出所有帳號
awk -F: '{if ($3>=500) print $1}' /etc/passwd

沒有留言: