Como destacar a segunda vogal de cada palavra em um arquivo?

Como destacar a segunda vogal de cada palavra em um arquivo?

Estou tentando destacar cada segunda vogal de uma palavra com a cor vermelha. O que estou fazendo de errado?

cat room.txt | sed 's:[AEIOU]:$(printf "${\e[1;30m}&${\e[0m}"):i2'

Sal. Desculpe por não deixar claro.

Gostaria que a segunda vogal de cada palavra fosse destacada em vermelho.

Responder1

  1. A substituição de comandos não é realizada entre aspas simples; em vez disso, você terá que usar aspas duplas.
  2. \e[1;30mnão é uma variável, então você não pode fazer isso ${\e[1;30m}.

Tentar:

sed 's:[AEIOU]:'"$(printf "\e[1;30m&\e[0m")"':i2' room.txt

Aqui, fecho a aspa simples e, em seguida, uso aspas duplas e, em seguida, reabro a aspa simples.

Responder2

Você entendeu mal a construção sedde s///2. Isso não fará cada segunda palavra, apenas fará a segunda correspondência em cada linha. Para destacar a segunda vogal de cada palavra, você precisa primeiro identificar as palavras. Uma maneira fácil e fácil é converter espaços em novas linhas, executar sede converter novamente:

tr ' ' $'\n' < room.txt | 
    sed 's:[AEIOU]:'"$(printf "\e[1;31m&\e[0m")"':i2' | 
        tr $'\n' ' ' 

Isso, no entanto, retornará uma string sem nova linha à direita. Para adicionar isso, apenas echoa coisa toda:

echo $(tr ' ' $'\n' < room.txt | 
      sed 's:[AEIOU]:'"$(printf "\e[1;31m&\e[0m")"':i2' | tr $'\n' ' ' )

Exemplo de saída:

insira a descrição da imagem aqui

informação relacionada