Palavras que terminam com s MAS excluem palavras que terminem com 's

0

Eu preciso encontrar uma lista de palavras de 5 letras começando com d (maiúscula ou minúscula), seguidas por uma vogal minúscula incluindo y e final com s. Meu comando: grep -i '^ d [aeiouy] .... s $' nome do arquivo. Quero excluir palavras da minha lista, mas não sei como escrever o comando.

    
por powellteacha 27.09.2015 / 13:56

3 respostas

1

Para evitar âncoras ^$ você pode usar a opção -x .
d pode ser maiúscula ou minúscula, mas a vogal é apenas minúscula e \B significa null inside of word , portanto o símbolo anterior não é pontuação ou espaço:

grep -x '[Dd][aeiouy]..\Bs' file
    
por 27.09.2015 / 14:53
1

Você está muito perto. Deve ser

grep -i '^d[aeiouy].[^']s$' file

Seu número de . caracteres é demais e você deseja excluir o penúltimo caractere de ser ' . Lembre-se, cada . é um espaço reservado para um caractere. Se as suas palavras estiverem em texto corrido, você poderá selecioná-las pelos delimitadores de palavras \< e \> , mas poderá ter que usar egrep para isso. Se você quiser extrair todas as palavras em texto que atende ao seu critério, use:

sed 's/[[:space:]][[:space:]]*/\
/g' foobar | grep "^[dD][aeiouy].[^']s$"

sed permite que você separe todas as palavras em uma linha sozinha. Observe a nova linha após \ na primeira linha.

    
por 27.09.2015 / 14:36
0

Você pode tentar isto: grep -i "^d[aeiouy]...[^']s$" <file name> . Exclui o caractere ' da última posição, exceto uma.

    
por 27.09.2015 / 14:23

Tags