A definição de palavra para grep -w
é uma sequência de caracteres alfanuméricos ou de sublinhado (na localidade ou limitada a ASCII dependendo da implementação / versão e com variações de comportamento se o que você procura para não iniciar ou terminar em caracteres de palavras).
Algumas ferramentas como zsh
, vim
, xterm
permitem personalizar a definição de palavra . Mas não é qualquer implementação grep
que eu conheço. Então, se você precisar de outra definição de palavra , precisará implementá-la de outra forma.
Por exemplo, se a sua definição de palavra deve ser qualquer seqüência de caracteres diferente de dois pontos , você faria:
grep -E '(^|:)arun(:|$)'
( arun
após ( |
) o início da linha ( ^
) ou :
e seguido por :
ou o final da linha ( $
)).
Ou com expressões regulares básicas padrão:
grep '^\(.*:\)\{0,1\}arun\(:.*\)\{0,1\}$'
(o início da linha ( ^
), opcionalmente ( \{0,1\}
) seguido por uma sequência de caracteres ( .*
) terminando em :
, seguido por arun
, seguido opcionalmente por uma sequência de caracteres começando com :
e o final da linha ( $
)).
Ou com PCRE (além da variante ERE acima também suportada pelo PCRE)
grep -P '(?<![^:])arun(?![^:])'
( arun
, desde que não ( (?<!...)
operador de look-behind negativo), nem seguido ( (?!...)
operador de look-ahead negativo) por um caractere diferente de :
( [^:]
); aquele que você também pode usar com grep -o
(para produzir somente a palavra), grep -b
(para retornar seu deslocamento dentro da entrada), grep --color
(para realçar a palavra) como com -w
)
Ou se a sua definição palavra deve ser a palavra normal ( [[:alnum:]_]
) mais o hífen:
grep -E '(^|[^[:alnum:]_-])arun([^[:alnum:]_-]|$)'
e assim por diante.