tac

Что делает команда tac в Linux

Команда tac в Linux используется для вывода содержимого файла построчно, но в обратном порядке — начиная с последней строки и заканчивая первой.
Название команды является обратным слову cat, которая выводит содержимое файлов «как есть».

Если cat показывает текст сверху вниз, то команда tac в Linux делает всё наоборот. Это может быть полезно при анализе логов, где последние строки обычно содержат самую свежую информацию.

Пример базового использования:

Bash
tac file.txt

Эта команда отобразит строки файла file.txt, начиная с конца.

Основные параметры команды tac

1. Параметр -b — вставка разделителя перед каждой строкой

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

Пример:

Bash
tac -b file.txt

2. Параметр -r — использование регулярных выражений

Параметр -r позволяет использовать регулярные выражения для определения разделителя, по которому tac будет разбивать содержимое.
Это особенно удобно, если файл содержит сложные структуры данных — например, записи в JSON или логах с временными метками.

Пример:

Bash
tac -r -s 'ERROR' logfile.txt

Здесь tac будет считать строку «ERROR» границей между блоками. Таким образом можно удобно просматривать логи, начиная с последней ошибки.

3. Параметр -s — указание собственного разделителя

По умолчанию команда tac в Linux использует символ новой строки (\n) в качестве разделителя.
С помощью -s можно задать свой разделитель, чтобы объединять или переворачивать не отдельные строки, а целые блоки текста.

Пример:

Bash
tac -s '---' report.txt

В этом случае tac будет считать блоком текста всё, что находится между строками, содержащими ---. Это удобно, если в отчете или логе записи разделены именно этим символом.

Примеры практического использования команды tac в Linux

1. Просмотр последних записей в логах

Если вы анализируете системные логи, то последние строки — самые актуальные.
С помощью команды tac в Linux можно вывести их в правильном порядке, начиная с новых:

Bash
tac /var/log/syslog | head -n 20

Эта комбинация покажет последние 20 записей системного лога.

Совет: используйте tac вместе с grep, чтобы быстро находить последние ошибки:

Bash
tac /var/log/syslog | grep -m 5 "error"

2. Обработка больших файлов

Когда нужно прочитать большой файл с конца, использование tac значительно экономит время.
В отличие от cat, который проходит файл целиком, команда tac в Linux может быть использована вместе с head или awk для обработки нужного объёма данных:

Bash
tac bigdata.log | awk 'NR <= 50'

Выводятся только последние 50 строк — удобно при анализе больших логов.

3. Инвертирование вывода других команд

Команда tac в Linux полезна не только для файлов, но и для вывода других утилит.
Например, чтобы отобразить список процессов в обратном порядке:

Bash
ps aux | tac

Или вывести список файлов в обратном порядке:

Bash
ls -l | tac

Такой подход помогает быстро увидеть последнюю добавленную или обновлённую строку.

4. Использование tac в скриптах

Команда tac в Linux часто применяется в bash-скриптах для реверсирования порядка данных.
Пример простого скрипта:

Bash
#!/bin/bash
for file in $(ls *.log)
do
  echo "Анализ файла $file"
  tac "$file" | grep "critical" | head -n 1
done

Скрипт ищет последнюю критическую запись в каждом лог-файле.

Совет: если нужно просто перевернуть текст из stdin (ввода), используйте echo с конвейером:

Bash
echo -e "one\ntwo\nthree" | tac
Результат:

Bash
three
two
one

Особенности работы команды tac в Linux

  1. Буферизация: tac сначала читает весь файл, а затем выводит его в обратном порядке. Это значит, что для очень больших файлов она может потребовать больше оперативной памяти.
  2. Производительность: несмотря на простоту, команда достаточно быстрая, особенно при использовании с конвейерами (|).
  3. Разделители: можно использовать не только стандартный \n, но и любые пользовательские строки или шаблоны.
  4. Совместимость: команда доступна во всех дистрибутивах Linux (Ubuntu, CentOS, Debian, Fedora и др.).

Когда использовать tac, а когда cat

ЗадачаЛучшая команда
Просмотр файла сверху внизcat
Просмотр файла снизу вверхtac
Поиск последних ошибокtac + grep
Анализ логов по блокамtac -r -s 'ERROR'

Команда tac в Linux — это мощный инструмент для администраторов, аналитиков и инженеров, которым нужно работать с большими текстовыми файлами и логами.
Используя параметры -b, -r и -s, можно гибко управлять форматом вывода и автоматизировать анализ данных.