Цепочка нескольких команд
Часть раздела Основы путешествия по 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Каждый конвейер добавляет ещё один шаг преобразования. При построении более длинных конвейеров подумай, какие входные данные нужны каждой команде и что она выдаёт в качестве выходных данных. Формат вывода одной команды должен подходить в качестве входных данных для следующей.
Задание
ЛегкоФайл visitors.txt содержит список имён посетителей с дубликатами. Используй конвейер из четырёх команд, чтобы подсчитать количество уникальных посетителей.
Запусти одну команду, которая:
- Использует
catдля чтенияvisitors.txt - Передаёт данные в
sort, чтобы расположить names в алфавитном порядке - Передаёт данные в
uniq, чтобы удалить повторяющиеся записи - Передаёт данные в
wc -l, чтобы подсчитать уникальные names
Подсказка: Объедини все четыре команды, используя несколько символов
|. Помни, чтоuniqудаляет только соседние дубликаты, поэтому сортировка должна выполняться перед ней.
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Каталоги
Создать каталогСкопировать каталогПереместить и переименовать каталогУдалить каталогИтог - Операции с каталогами7Содержимое файлов
Head и TailПодсчёт словКоманда sortКоманда uniqОсновы grepGrep с флагамиПовторение - Текстовый детектив10Проект анализатора логов
Обзор проектаПросмотр файла лога2Навигация
Вывод текущей рабочей директорииСписок файловСмена директорииАбсолютные и относительные путиДомашняя и корневая директорииИтог - Найди свой путь8Перенаправление
Стандартный выводПерезапись в файлДописывание в файлСтандартный вводСтандартная ошибкаПовторение - Сборщик логов11Права доступа
Понимание прав доступаЧтение прав доступаChmod с числамиChmod с символамиВладение файламиПовторение - Заблокируйте доступ14Проект скрипта резервного копирования
Обзор проектаПолучение пути к источнику3Файлы
Создать файлПрочитать файлСкопировать файлПереместить и переименовать файлУдалить файлПовторение - Операции с файлами6Символы подстановки и шаблоны
Звёздный символ подстановкиВопросительный символ подстановкиСкобочные символы подстановкиКомбинирование символов подстановкиПовторение - выборочные операции9Каналы
Что такое каналЦепочка двух командЦепочка нескольких командКанал с grepИтог - Конвейер данныхПотренируйтесь самостоятельно: Песочница Terminal