Сделайте случаи строки полужирными

Можно указать несколько имен файлов к tee, и кроме того стандартный вывод может быть передан по каналу в одну команду. Для диспетчеризации вывода нескольким командам необходимо создать несколько каналов и указать каждого из них как один вывод tee. Существует несколько способов сделать это.

Замена процесса

Если Ваша оболочка является ksh93, ударом или zsh, можно использовать замену процесса. Это - способ передать канал команде, которая ожидает имя файла. Оболочка создает канал и передает имя файла как /dev/fd/3 к команде. Число является дескриптором файла, с которым подключен канал. Некоторые варианты Unix не поддерживают /dev/fd; на них именованный канал используется вместо этого (см. ниже).

tee >(command1) >(command2) | command3

Дескрипторы файлов

В любой оболочке POSIX можно использовать несколько дескрипторов файлов явно. Это требует варианта Unix, который поддерживает /dev/fd, начиная со всех кроме одного из выводов tee должен быть указан по имени.

{ { { tee /dev/fd/3 /dev/fd/4 | command1 >&9;
    } 3>&1 | command2 >&9;
  } 4>&1 | command3 >&9;
} 9>&1

Именованные каналы

Самый основной и портативный метод должен использовать именованные каналы. Оборотная сторона - то, что необходимо найти перезаписываемый каталог, создать каналы и вымыться впоследствии.

tmp_dir=$(mktemp -d)
mkfifo "$tmp_dir/f1" "$tmp_dir/f2"
command1 <"$tmp_dir/f1" & pid1=$!
command2 <"$tmp_dir/f2" & pid2=$!
tee "$tmp_dir/f1" "$tmp_dir/f2" | command3
rm -rf "$tmp_dir"
wait $pid1 $pid2

1
07.09.2013, 01:19
2 ответа

Как предложено @slm я использовал grep --color команда наряду с a regex. Вот мое конечное решение, которое работало отлично на меня.

 grep --color=always -P '(?=ATG).*(?=GT).*(?=TAG)' data.txt
3
27.01.2020, 23:21

Нахождение строк должно быть относительно легким использованием инструмента такой как grep. Учитывая это вопрос о домашней работе, можно ли обеспечить что-нибудь, что Вы исследовали к настоящему времени? Я не хочу пользоваться возможностью изучения далеко от Вас, но хотел бы помочь также.

Смотрите на grepстраница справочника. Я был бы склонен попытаться решить это путем создания файла с соответствующими строками, давайте назовем его patterns.txt.

$ cat patterns.txt
AGT
AG

После того как Вы помещаете строки, которые Вы ищете в этом файле, который можно использовать grep сделать и цветное выделение и также соответствие. Переключатель, -f позволяет Вам соответствовать шаблонам, которые обеспечиваются файлом, как так:

$ grep -f patterns.txt sample.txt

   ss of grep output

Я высоко поощряю Вас читать grep страница справочника и выезд некоторые из других переключателей это должно предложить. Также попытайтесь играть вокруг с захватом для различных строк и попытайтесь использовать часть из grepдругие переключатели.

Не стесняйтесь продолжать в комментариях, если у Вас есть какие-либо последующие вопросы, Unix - все об экспериментировании.

1
27.01.2020, 23:21
  • 1
    Спасибо за идею. Я не знал о grep. После большого экспериментирования я наконец нашел свое решение при помощи регулярного выражения с grep --color команда и это работали отлично. –  fts 07.09.2013, 17:57
  • 2
    @fts - довольный услышать его! Добро пожаловать в U&L, надо надеяться, мы будем видеть Вас, назад спрашивая + ответ на Q. 8-). –  slm♦ 07.09.2013, 18:03

Теги

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