2011-10-12 37 views
11

pgrep使用正則表達式作爲模式樣式。我錯過了grep的-i選項,告訴pgrep,我正在搜索不區分大小寫。如何在pgrep中搜索不區分大小寫?

一種替代方法是

ps ax | grep -i PATTERN 

但我必須使用PID發送KILL信號。使用pgrep和pkill組合我可以使用相同的模式來殺死應用程序。

如何在bash上使用正則表達式的REG_ICASE?

+1

爲什麼不使用AWK殺死所有的進程匹配不區分大小寫的過程? '$ ps ax | grep -i PATTERN | awk'{print $ 1}'' –

+1

代碼在那裏,剛剛註釋掉了。不知道爲什麼這麼想:-) http://procps.cvs.sourceforge.net/viewvc/procps/procps/pgrep.c?view=markup#l627 – plundra

+0

有趣。由於-I選項,代碼被註釋掉。在查殺之前,FreeBSD似乎會問。嗯,我看不到-i選項如何使用pgrep可以接受。所以,我認爲,我必須使用awk場景。 – timomeinen

回答

6
kill `ps ax | grep -i PATTERN | awk '{ print $1 }'` 

將使用神奇`

+1

如果我可以這樣建議,grep在這裏是不需要的,awk可以做匹配case-insensetive模式的工作'ps ax | awk'BEGIN {IGNORECASE = 1}/PATTERN/{print $ 1}'' –

8

如果字符串不是太長:

pkill -f '[Pp][Aa][Tt][Ee][Rr][Nn]'