como excluir uma string que inclua espaço por “grep -v” [closed]

0

Eu tenho um script que é executado usando bash -c e quero saber quantos processos estão sendo executados com esse script.

$ ps ax | grep my_script_run | grep -v grep | grep -v "bash -c"
11121 ?        S      0:00 bash -c export PATH="/opt/rbenv/bin:$PATH"; ruby my_script_run.rb
11173 ?        Rl    19:38 ruby my_script_run.rb

De alguma forma, o comando acima não exclui bash -c string.

$ ps ax | grep my_script_run | grep -v grep | grep -v bash
11173 ?        Rl    19:42 ruby my_script_run.rb

Esse comando funciona bem, mas desejo excluir bash -c , não bash . Por que o primeiro comando não exclui bash -c ? E como posso excluí-lo corretamente?

Editar

Esqueci de escrever Estou usando wc -l após o grep

    
por ironsand 11.06.2016 / 08:47

2 respostas

1

e

ps ax | grep -c [m]y_script_run

que deve contar 2 processos.

Ou

\ps ax  | \grep  '[m]y_script_run' | \grep -v 'bash -c' -c

onde (edit)

  • -c contará linha
  • [m]y_script_run é um truque de regexp para grep my_script_run , mas não para si mesmo. (desvantagem é que ele só funciona em uma string fixa, não em ${myvar} ). Graças a @ G-Man esta string deve ser citada.

  • \ps e \grep unalias grep e ps (apenas no caso)

por 11.06.2016 / 09:07
-1

Para evitar que o grep trate o -c como opção, existem algumas maneiras em que algumas delas são

  1. grep -v -- 'bash -c'
  2. grep -v 'bash \-c'
por 11.06.2016 / 09:48