Я нашел свою проблему. Как-то я создал ярлык, и 2 копии. Я удалил ярлык и обе копии. Проблема исправлена.
-121--243689-
Самый простой способ:
cat test.txt | perl -pe "s/^(#.*)/\e[0;32m\1\033[0m/g || s/(aaa|bbb)/\e[1;31m\1\033[0m/g"
Используется логический оператор | |
, чтобы указать perl запускать только второй s///
, если первый не удался. т.е. аналогично , если (/#/)... иначе если (/aaa 'bbb/)...
Вы можете добавить больше | | s///
в конце сценария, если вам нужно, но если вам нужно найти и раскрасить еще много совпадений, делать это как один лайнер будет слишком сложно. В этом случае следует переписать всю вещь как автономный сценарий # !/usr/bin/perl -p
, возможно, с одной s///g | |
на строку и заключительной запятой вместо | |
на последней строке.
Например:
#! /usr/bin/perl -p
s/^(#.*)/\e[0;32m\1\033[0m/g ||
s/(aaa|bbb)/\e[1;31m\1\033[0m/g ||
s/(ccc)/\e[1;34m\1\033[0m/g ;
Обратите внимание, что это означает, что только одно совпадение будет найдено на любой данной линии, и первое совпадение выиграет. Так что в моем более длинном примере сценария выше, если "aaa" или "bbb" находятся в строке, то они будут окрашены, но если "ccc" находится в той же строке, это не будет.
Наконец, похоже, что вы изобретаете колесо заново. Для раскрашивания текста уже существует несколько инструментов. Например, инструмент выделения . В основном используется для выделения синтаксиса исходного кода, но может использоваться для раскрашивания любого вида текста.
-121--228922-
xorriso -outdev /dev/sr0 -list_speeds
Результат зависит от введенной среды.