egrep para localizar linhas que começam com um caractere que também contém alguma string

1

Digamos que eu tenha um arquivo com ls -l output:

waaa- foo.pdf
-bbb- foobar.pdf
-ccc- foobar
waaa- foobar

Eu gostaria de obter apenas a primeira linha

waaa -foo.pdf

como resultado final e estou tentando:

egrep -E "^w" .file | egrep -E "*.pdf"

Existe alguma maneira de combinar essas duas pesquisas?

    
por solfish 29.07.2017 / 22:12

1 resposta

5

Você tem que escrever como:

egrep "^w.*\.pdf$" filename
  • Os meios começaram com w seguido 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
    
por Ravexina 29.07.2017 / 22:19