Можно указать несколько имен файлов к 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
Как предложено @slm я использовал grep --color
команда наряду с a regex
. Вот мое конечное решение, которое работало отлично на меня.
grep --color=always -P '(?=ATG).*(?=GT).*(?=TAG)' data.txt
Нахождение строк должно быть относительно легким использованием инструмента такой как grep
. Учитывая это вопрос о домашней работе, можно ли обеспечить что-нибудь, что Вы исследовали к настоящему времени? Я не хочу пользоваться возможностью изучения далеко от Вас, но хотел бы помочь также.
Смотрите на grep
страница справочника. Я был бы склонен попытаться решить это путем создания файла с соответствующими строками, давайте назовем его patterns.txt
.
$ cat patterns.txt
AGT
AG
После того как Вы помещаете строки, которые Вы ищете в этом файле, который можно использовать grep
сделать и цветное выделение и также соответствие. Переключатель, -f
позволяет Вам соответствовать шаблонам, которые обеспечиваются файлом, как так:
$ grep -f patterns.txt sample.txt
Я высоко поощряю Вас читать grep
страница справочника и выезд некоторые из других переключателей это должно предложить. Также попытайтесь играть вокруг с захватом для различных строк и попытайтесь использовать часть из grep
другие переключатели.
Не стесняйтесь продолжать в комментариях, если у Вас есть какие-либо последующие вопросы, Unix - все об экспериментировании.
grep
. После большого экспериментирования я наконец нашел свое решение при помощи регулярного выражения с grep --color
команда и это работали отлично.
– fts
07.09.2013, 17:57