2011-10-12 11 views
11

pgrep używa regex jako stylu wzorca. Tęsknię za opcją -i grep, aby powiedzieć pgrep, że szukam case-niewrażliwą.Jak mogę przeszukiwać wielkość liter w pgrep?

Alternatywą jest

ps ax | grep -i PATTERN 

Ale potem muszę używać PID, aby wysłać sygnał KILL. Dzięki komendzie pgrep i pkill mogę użyć tego samego wzorca do zabicia aplikacji.

W jaki sposób mogę użyć reggeka REG_ICASE regex w locie na bash?

+1

Dlaczego nie używać awk? 'topór $ ps | grep -i PATTERN | awk '{print $ 1}' ' –

+1

Kod jest tam, po prostu skomentowany. Nie wiem, dlaczego pomyślałem :-) http://procps.cvs.sourceforge.net/viewvc/procps/procps/pgrep.c?view=markup#l627 – plundra

+0

Interesujące. Kod jest wykomentowany ze względu na opcję -I. Wydaje się, że FreeBSD pyta przed zabiciem. Hmm, nie mogę zobaczyć, jak używać pgrep akceptowalnie bez opcji -i. Tak więc myślę, że muszę użyć scenariusza awk. – timomeinen

Odpowiedz

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

zabije wszystkie swoje pasującym przypadku procesami niewrażliwe pomocą magicznego `

+1

Jeśli mogę zasugerować, grep nie jest tu potrzebny, awk może wykonać zadanie w przypadku nieinsencyjnego wzoru pasującego do 'ps ax | awk 'BEGIN {IGNORECASE = 1}/PATTERN/{print $ 1}' ' –

8

Jeśli łańcuch nie jest zbyt długi:

pkill -f '[Pp][Aa][Tt][Ee][Rr][Nn]' 
Powiązane problemy