Назад | Перейти на главную страницу

Можно ли фильтровать вывод хвоста?

Я хотел бы сохранить файл, но только строки вывода, в которых есть определенная строка. Это возможно?

используйте grep. Он построен именно для этой цели.

Чтобы найти строки из хвоста / var / log / syslog, в которых есть cron, просто выполните:

tail -f /var/log/syslog | grep cron

А поскольку он принимает все, что угодно, поверх стандартного ввода, вы можете использовать его и для вывода любой другой команды, установив конвейер таким же образом, как указано выше (с использованием символа |).

tail -f /var/log/messages | grep "myfilterword"

Надеюсь, это поможет.

Вот еще пара идей, которые не так просты, но могут предложить некоторую интересную дополнительную гибкость:

Во-первых, вы можете фильтровать с помощью awk вместо grep:

tail -f /var/log/messages | awk '/myfilterword/'

это работает точно так же, как в примере с использованием grep. Вы можете расширить это, используя возможности awk, например:

tail -f /var/log/messages | \
awk '/myfilterword/ { for (i=6; i<=NF; i++) printf("%s ", $i); printf("\n")}'

который будет печатать с 6-го по последнее поле вывода (поля разделены пробелами)

Еще одна похожая идея - использовать однострочник perl:

tail -f /var/log/messages | perl -ne "/myfilterword/ and print"

это работает точно так же grep. Может быть, вам нужен счетчик номеров строк и только 6-е поле? Как насчет этого:

tail -f /var/log/messages | \ 
perl -lane "/myfilterword/ and printf \"%6d %s\n\",++\$a,\$F[6]"

Очевидно, что все подобные вещи можно делать и с другими инструментами, но я хотел проиллюстрировать, что есть несколько интересных способов использовать здесь более универсальные языки, такие как awk или perl.

Еще одна хитрость, которую стоит отметить, если у вас есть CSV-файл с заголовками, которые вы хотите опустить, например:

% cat data.txt
fruit        dessert        calories
Apple        Pie            770
Banana       Pudding        625
Cherry       Cobbler        990
% tail -n +2 data.txt
Apple        Pie            770
Banana       Pudding        625
Cherry       Cobbler        990

Неважно, как долго вводится tail это +n -2 будет опускать первую строку.