Como encontrar strings usando expressões regulares no grep

1

Portanto, tenho um arquivo list com a lista das pessoas de uma empresa. Cada linha contém Position (uma string curta), anos, nome (primeiro e último), salário e nacionalidade (três letras maiúsculas). Eles estão divididos por vírgulas.

Eu quero encontrar duas coisas usando grep e regex:

  1. Todas as pessoas cujo sobrenome começa com C.
  2. Todas as pessoas que têm 3 nomes

Para o primeiro eu tentei: grep -E 'C\>' list , mas retorna apenas um nome (estranho). Para o segundo: grep "[[:alpha:]]\b[ ]\?[[:alpha:]]\b[]\?[[:alpha:]]" list , mas também falha.

    
por Highlights Factory 08.12.2014 / 00:17

1 resposta

2

\> é o regexp (comprimento zero) para o final da palavra, então C\> provavelmente não corresponderá aos sobrenomes que iniciam com um 'C'. Talvez você devesse tentar \<C .

[[:alpha:]] corresponde a exatamente um caractere, portanto é muito improvável que isso corresponda a um nome real. Você deve acrescentar um multiplicador como * ou + (somente em ERE?).

    
por 08.12.2014 / 00:49