A página man do comando pgrep
indica que o padrão "especifica uma expressão regular estendida para correspondência com os nomes de processos ou linhas de comando". Aparentemente, Expressões regulares estendidas são uma extensão das expressões regulares usadas no comando grep original do UNIX.
Eu preciso corresponder a string 'myProcess'
, mas excluir a string 'test_myProcess'
usando Expressões regulares estendidas. Inicialmente, assumi que Expressões Regulares Estendidas suportariam a asserção lookbehind negativa, o que me levou à seguinte expressão regular: (?<!test_)(myProcess)
. Isso aparentemente funciona para outras ferramentas de expressão regular (tentei no site do Regex101).
No entanto, quando eu tento com pgrep
, recebo o seguinte erro: Invalid preceding regular expression
. Depois de olhar algumas páginas de expressões regulares estendidas, parece que a declaração lookbehind negativa não existe para esse tipo de expressão regular (ou pelo menos eu não consegui encontrar nenhuma referência a ela). Eu preciso saber como combinar a string
'myProcess'
, mas exclui a string '' test_myProcess 'usando expressões regulares estendidas.
Editar:
Exemplos de texto que quero corresponder (ou não corresponder)
Correspondência desejada:
- myProcess
- /usr/local/bin/myProcess.py
- / usr / bin / myProcess
Corresponder NÃO desejado:
- test_myProcess
- /usr/local/bin/test_myProcess.py
- / usr / bin / test_myProcess
Neste momento, estou brincando com a ideia de executar o pgrep duas vezes, depois de corresponder 'myProcess'
e uma vez coincidindo com 'test_myProcess'
e tomando a diferença dos dois resultados como a resposta correta. No entanto, estou definitivamente interessado em soluções alternativas.
Editar:
Observe que o nome do processo em si não incluirá 'myProcess'
. Ele simplesmente aparecerá na linha de comando para esse processo. O nome do processo provavelmente será python2.7
. E, 'myProcess'
não é garantido para ocupar o início ou o fim da cadeia. Além disso, conforme assinalei, quero corresponder a string se 'myProcess'
estiver presente, mas não se 'test_myProcess'
também estiver presente.