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.