Menu
Coddy logo textTech

Цепочка нескольких команд

Часть раздела Основы путешествия по Terminal на Coddy — урок 45 из 82.

Вы не ограничены соединением только двух команд. Конвейеры могут объединять в цепочку столько команд, сколько вам нужно, при этом каждая из них обрабатывает вывод предыдущей команды.

Просто добавьте больше символов |, чтобы расширить конвейер:

cat data.txt | sort | head -5

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

Вот практический пример, который находит уникальные отсортированные записи:

cat names.txt | sort | uniq

Содержимое файла сначала сортируется (что группирует дубликаты вместе), затем uniq удаляет идущие подряд повторяющиеся строки. Порядок здесь имеет значение — uniq удаляет только соседние дубликаты, поэтому сортировка должна идти первой.

Вы можете добавить еще больше этапов. Чтобы подсчитать количество уникальных имен:

cat names.txt | sort | uniq | wc -l

Каждый конвейер добавляет еще один шаг преобразования. При создании длинных конвейеров думайте о том, что каждой команде требуется на вход и что она выдает на выход. Формат вывода одной команды должен подходить в качестве входных данных для следующей.

challenge icon

Задание

Легко

Файл visitors.txt содержит список имен посетителей с дубликатами. Используйте конвейер из трех команд, чтобы подсчитать количество уникальных посетителей.

Запустите одну команду, которая:

  • Использует cat для чтения visitors.txt
  • Передает данные по конвейеру в sort для упорядочивания имен по алфавиту
  • Передает данные по конвейеру в uniq для удаления дубликатов
  • Передает данные по конвейеру в wc -l для подсчета количества уникальных имен

Подсказка: Соедините все четыре команды вместе, используя несколько символов |. Помните, что uniq удаляет только соседние дубликаты, поэтому сортировка должна предшествовать этой команде.

Шпаргалка

Конвейеры (pipes) позволяют объединять несколько команд в цепочку, при этом каждая команда обрабатывает вывод предыдущей. Используйте символ | для соединения команд:

cat data.txt | sort | head -5

Данные передаются слева направо через каждую команду последовательно.

Чтобы найти уникальные отсортированные записи:

cat names.txt | sort | uniq

Команда uniq удаляет идущие подряд дубликаты строк, поэтому сначала необходимо выполнить сортировку, чтобы сгруппировать дубликаты вместе.

Чтобы подсчитать количество уникальных записей, добавьте wc -l в конвейер:

cat names.txt | sort | uniq | wc -l

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

Попробуйте сами

Терминал
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы