Напечатайте второй гласный в слове красным цветом

Как напечатать второй гласный в слове красным или синим цветом? Допустим, я выполняю свой скрипт с именем «script1», который читает текстовый файл. Мой сценарий должен быть способен напечатать второй гласный в каждом слове красным или синим цветом. Если есть только одна гласная, напечатайте это в цвете. Если гласных нет, напечатайте первую букву в слове в цвете!

0
задан 22 March 2015 в 16:56

2 ответа

#!/bin/bash

filename="./file" # change this filename according to your requirements
red= 

Недостаток: Вы освобождаете последовательные пробелы и вкладки в выводе.

<час> [еще 115] информация: help <command> или man <command> или info <command>

\e[31m' reset=

Недостаток: Вы освобождаете последовательные пробелы и вкладки в выводе.

<час> [еще 115] информация: help <command> или man <command> или info <command>

\e[0m' # read single line from $filename in $line (see last "done", last line of code) while read -r line; do # loop over every single word in $line for word in $line; do vc=$(tr -cd '[aeiouAEIOU]' <<< "$word") # remove all but vowels case ${#vc} in # ${#vc}: number of vowels 0) # no vowel sed -E "s/^./${red}&${reset}/" <<< "$word" ;; 1) # one vowel sed -E "s/^([^aeiou]*)([aeiou]+)(.*)$/\1${red}\2${reset}\3/i" <<< "$word" ;; *) # two or more vowels sed -E "s/^([^aeiou]*[aeiou][^aeiou]*)([aeiou])(.*)$/\1${red}\2${reset}\3/i" <<< "$word" ;; esac done | tr "\n" " " echo done < "$filename"

Недостаток: Вы освобождаете последовательные пробелы и вкладки в выводе.

<час> [еще 115] информация: help <command> или man <command> или info <command>

1
ответ дан 22 March 2015 в 16:56

Как насчет того, чтобы использовать grep для окраски соответствия, наряду с некоторым PCRE-fu? что-то как

grep --color=always -iP '\b[^aeiou\s]*[aeiou][^aeiou\s]*\K[aeiou]'

где

  • \b соответствовать границе слова; затем
  • [^aeiou\s]* соответствуйте нулю или большему количеству негласного, непробелов
  • [aeiou] соответствовать первому гласному
  • [^aeiou\s]* соответствуйте другому нулю или большему количеству негласного, непробелов
  • \K исключить все вышеупомянутое из финала соответствовало выражению (эффективно, переменная длина lookbehind утверждение)
  • наконец, [aeiou] соответствовать желаемому второму гласному

enter image description here

0
ответ дан 22 March 2015 в 16:56

Другие вопросы по тегам:

Похожие вопросы: