Fornece um comando que preenche os arquivos que começam com uma consoante e os únicos têm vogais após

1

Não sei como fazer isso. Eu tentei fazer

egrep -i ^[^aeiou] [aeiou]$ /usr/share/dict/words

Mas não funciona de todo. O que estou fazendo errado?

    
por Clark0904 22.03.2018 / 20:05

2 respostas

1

Você precisará citar a expressão do shell:

grep -i '^[^aeiou][aeiou]*$' /usr/share/dict/words

Se você não fizer isso, os padrões podem ser expandidos para nomes de arquivos que existem no diretório atual. Além disso, como você inseriu um espaço entre as duas partes do padrão, grep pensará que a segunda parte é um nome de arquivo que deve ser pesquisado (você receberá um erro "Nenhum arquivo ou diretório").

O arquivo /usr/share/dict/words tem uma palavra por linha, portanto, você pode usar -x e remover as âncoras da expressão, se desejar:

grep -ix '[^aeiou][aeiou]*' /usr/share/dict/words

Com -x , grep só retornará correspondências que abranjam toda a linha.

Se você exigir uma vogal (o acima pode retornar palavras consonantais únicas, pois [aeiou]* corresponde à string vazia):

grep -ix '[^aeiou][aeiou][aeiou]*' /usr/share/dict/words

ou

grep -Eix '[^aeiou][aeiou]+' /usr/share/dict/words
    
por 22.03.2018 / 20:27
0

Você precisa:

  1. cite a expressão regular
  2. remova o espaço entre (ele pesquisará)
  3. adicione um + para corresponder a uma ou mais vogais (um recurso de egrep expressões regulares)

Tente:

egrep -i '^[^aeiou][aeiou]+$' /usr/share/dict/words
    
por 22.03.2018 / 20:23