echo Impossible|sed 's/Im/To be /'

June 25, 2010

Tip. grep egrep or sed?

用 grep 用 egrep 還是用 sed ?


前幾日跟 smills 及 timchen119 使徒提姆@Python 分別聊到了極限與極艱困的環境下可用的程式語言,席間 談到了不少可能性,在時間壓力下有限時間,快速開發,flashrom 及 ram size 極少的情況下,我們到底還有什麼 工具可以使用,談論範圍由 python, perl, lua, bash, ash, C, awk, 到 sed。

閒聊當然是沒有結論,但我在 timchen119 提點下,找到了個用 sed 作 類似 grep/egrep 小技巧,怕忘作個記錄。


110碼$> cat /etc/passwd | sed -r '/root|nobody|sys/!d'
root:x:0:0:root:/root:/bin/bash
sys:x:3:3:sys:/dev:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh

ll0碼$> cat /etc/passwd | sed '/nobody\|sys/{s/:/-/g;p};d'
sys-x-3-3-sys-/dev-/bin/sh
nobody-x-65534-65534-nobody-/nonexistent-/bin/sh

ll0碼$> cat /etc/passwd | nl | sed 's/^\(.*\)\(nobody\|sys\).*$/\1\2/p;d'
 4  sys:x:3:3:sys
18  nobody:x:65534:65534:nobody