"grep -v"를 통해 공백이 포함된 문자열을 제외하는 방법

"grep -v"를 통해 공백이 포함된 문자열을 제외하는 방법

를 사용하여 실행 중인 스크립트가 있고 bash -c해당 스크립트를 사용하여 실행 중인 프로세스 수를 알고 싶습니다.

$ 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

어떻게 든 위 명령은 bash -c문자열을 제외하지 않습니다.

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

bash -c이 명령은 잘 작동하지만 자체 가 아닌 해당 명령을 제외하고 싶습니다 bash. 첫 번째 명령이 왜 제외되지 않습니까 bash -c? 어떻게 올바르게 제외할 수 있나요?

편집하다

wc -l다음에 사용하는 것을 쓰는 것을 잊어버렸습니다.grep

답변1

무엇에 대해

ps ax | grep -c [m]y_script_run

2개의 프로세스로 계산되어야 합니다.

또는

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

어디서(편집)

  • -c줄을 셀 수 있음
  • [m]y_script_rungrep의 정규식 트릭이지만 my_script_run그 자체는 아닙니다. (단점은 고정 문자열에서만 작동하고 ${myvar}. @G-Man에게 감사드립니다. 이 문자열을 인용해야 합니다.

  • \psunalias \grepgrep 및 ps (만약의 경우에 대비해)

답변2

피하다grep-c옵션 으로 간주되며 그 중 일부에는 방법이 거의 없습니다.

  1. grep -v -- 'bash -c'
  2. grep -v 'bash \-c'

관련 정보