Как выделить второй гласный от каждого слова в файле?

Я пытаюсь выделить каждый второй гласный, одним словом, к красному цвету. Что я делаю неправильно?

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

Ps. Извините за создание его неясный.

Я хотел бы 2-й гласный каждого слова, выделенного в красном.

0
задан 27 March 2015 в 00:00

2 ответа

  1. Замена команды не выполняется в одинарных кавычках, необходимо будет использовать двойные кавычки вместо этого.
  2. \e[1;30m не переменная, таким образом, Вы не можете сделать ${\e[1;30m}.

Попытка:

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

Здесь, я закрываю одинарную кавычку и затем использую двойные кавычки и затем вновь открыл одинарную кавычку.

1
ответ дан 27 March 2015 в 00:00

Вы неправильно понимаете sed s///2 создать. Так не пойдет каждое второе слово, оно только сделает второе соответствие на каждой строке. o выделяют второй гласный каждого слова, необходимо определить слова сначала. Легкий простой способ состоит в том, чтобы преобразовать пробелы в новые строки, выполнить Ваш sed и затем преобразуйте назад снова:

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

Это, однако, возвратит строку без запаздывающей новой строки. Добавить это, просто echo вся вещь:

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

Пример произвел:

enter image description here

1
ответ дан 27 March 2015 в 00:00

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

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