2015-09-09 67 views
0

當我使用:ps -o user,cmd我的輸出是:如何使用grep命令和多個搜索字符串?

User CMD 
0  in.telnetd 
0  sh 
0  processd 
0  processe 
0  in.telnetd 
0  -sh 
0  top 

我想2行(其中包含processd & processe)我做grep命令後。

我用什麼:

1. ps -o user,cmd | grep "processd\|processe" 
2. ps -o user,cmd | grep processd | grep processe 

我使用正確的格式到grep什麼,我想還是像我需要修改我的查詢?

回答

0

[SOLVED]

一些試驗和錯誤我也是剛剛纔知道的後-E選項。

ps -o user,cmd | grep -E processd\|processe

+1

有關您的信息:有三個類似於grep的命令:常規的'grep'(使用普通正則表達式),'fgrep'或'grep -F'(使用固定字符串)和'egrep'或'grep -E'(擴展的grep,它可以組合不同的正則表達式)。 – Dominique

1

一個方法是:

ps -o user,cmd | grep "process[de]" 

當然,你可能最終也趕上線,如

0  /some/other/app --with --lots of arguments including also processe 

,以確保你沒有聽清楚,你應該用awk。

1

您正在尋找

ps -o user,cmd | egrep "processd|processe" 

當我需要檢查日誌文件,我用類似的東西:

interesting="keyword1" 
interesting+="|key2 
interesting+="|key3" 
skip="garbage1" 
skip+="|garb2" 
skip+="|garb3" 

grep "^20150909" logfile | egrep "${interesting}" | egrep -v "${skip}" 
+0

已經投票。僅供參考,我認爲那些現代POSIX-y民衆正在擺脫'egrep',並建議我們使用'grep -E'。 –