Você tem que escrever como:
egrep "^w.*\.pdf$" filename
- Os meios começaram com
wseguido por qualquer caractere e terminaram em.pdf.
para um "ou" lógico, você pode usar a opção -e :
egrep -e pattern1 -e pattern2
significa todas as linhas com pattern1 ou pattern2 .
ou como @steeldriver sugerido, use regex estendido "ou":
egrep "(pattern1|pattern2)"
e, como você sabe, para expressões regulares estendidas, é necessário usar egrep e não grep , por exemplo:
egrep '(bbb|ccc)' # works fine for your file
grep '(bbb|ccc)' # doens't have any result
Para um "e" você precisa canalizar para outro egrep :
grep pattern1 | grep pattern2
significa todas as linhas com pattern1 e pattern2 .
ou use outras ferramentas como awk :
awk '/pattern1/ && /pattern2/' filename