Modelo de Grep para extrair linhas onde a segunda palavra tem apenas duas vogais

0

Por exemplo, eu tenho arquivo com conteúdo

hello world
it's nice to see you
amazing night
what a wonderful day
my name is Robert
still breathing
speaking bottom soul
something wrong

Eu preciso combinar essas linhas, em que a segunda palavra tem exatamente duas vogais. Então a saída deve ser:

it's nice to see you
my name is Robert
speaking bottom soul

Como posso fazer isso usando o grep?

    
por Maksym Musiienko 10.12.2016 / 17:59

1 resposta

2

grep com expressões regulares estendidas:

grep -iE '^[^[:blank:]]+[[:blank:]]+([^aeiou]*[aeiou]){2}[^aeiou]*\>' file

grep com pcre

grep -iP '^\S+\s+([^aeiou]*[aeiou]){2}[^aeiou]*\b' file

perl (sinceramente, fiz isso independentemente do comentário da steeldriver)

perl -ane 'print if (lc($F[1]) =~ tr/aeiou/aeiou/) == 2' file

awk

awk '{col2 = tolower($2); gsub(/[aeiou]/,"",col2)} length($2) - length(col2) == 2' file
    
por 10.12.2016 / 19:49