Tail примеры. Вывести строки из N-й строки

Команда tail в операционных системах UNIX или Linux используется для вывода последних N строк из файла на терминал. Команда tail особенно используется с лог-файлами, чтобы вывести последние несколько строк, чтобы знать о ошибках. Синтаксис команды tail таков:

Tail

Параметры команды tail таковы:

  • c: Выводит последние N байт указанного файла; Выводит + печатает символы N байт в файле.
  • n: Выводит последние N строк; Выводит + печатает строки из N-го количества строк в файле.
  • f: Вывод строк в режиме реального времени (выводит когда появляются новые строки в файле).

Утилита tail в примерах Unix/Linux

В своей статье «Утилита tail в примерах Unix/Linux» я хотел бы рассказать о замечательной утилите tail и привести готовые примеры использования.

Создайте следующий файл use_tail.txt в операционной системе Linux или Unix для практикующих примеров со следующим содержанием:

# cat /home/captain/use_tail.txt This is my unix/linux blog I will write some examples I will use tail with this file Ok. Let"s start it!

Вывод последних 10 строк.

По умолчанию, команда tail печатает последние 10 строк из файла:

# tail /home/captain/use_tail.txt This is my unix/linux blog I will write some examples I will use tail with this file Ok. Let"s start it!

Вывести последние N строк.

Используйте опцию «-n», чтобы напечатать последние N строк из файла. Следующий пример печатает последние 3 строки из файла:

# tail -n3 /home/captain/use_tail.txt I will use tail with this file Ok. Let"s start it!

Вывести строки из N-й строки.

Вы можете печатать строки, начиная с N-й строки в файле. Следующий пример печатает строки начиная с 4-й линии:

# tail -n+4 /home/captain/use_tail.txt Ok. Let"s start it!

Вывести последние n байт.

Использовать опцию «-c» для вывода последних N байт из файла. Следующий пример печатает последние 7 байт из файла:

# tail -c7 /home/captain/use_tail.txt rt it!

5. Print characters from the Nth byte

Используйте следующий символ «+» с опцией «-c» чтобы печатать символы с N-го байта. Следующий пример печатает символы с 69-го байта.

# tail -c+69 /home/captain/use_tail.txt l with this file Ok. Let"s start it!

Выводить последние строки из файла динамически (в режиме реального времени).

Опция «-f» выводит строки из файла, который динамично растет. При запуске команды «tail -f» с именем файла, он будет печатает последние 10 строк и ожидать новых линий, которые будут добавлены в файл. Всякий раз, когда новые линии добавляется в файл, команда tail также добавляет новые строки на стандартный вывод (на терминал). Опция «-f» полезна при отладке приложений.. Вы можете использовать опцию «-f», чтобы начать анализировать вывод разных ошибок в режиме реального времени:

# tail -f /var/log/nginx/error-linux-notes.log

На этом, у меня все, тема «Утилита tail в примерах Unix/Linux» завершена.

Команда tail в операционных системах UNIX или Linux используется для вывода последних N строк из файла на терминал. Команда tail особенно используется с лог-файлами, чтобы вывести последние несколько строк, чтобы знать о ошибках. Синтаксис команды tail таков: # tail

араметры команды tail таковы:

  • c : Выводит последние N байт указанного файла; Выводит + печатает символы N байт в файле.
  • n : Выводит последние N строк; Выводит + печатает строки из N-го количества строк в файле.
  • f : Вывод строк в режиме реального времени (выводит когда появляются новые строки в файле).

Утилита tail в примерах Unix/Linux

В своей статье «Утилита tail в примерах Unix/Linux» я хотел бы рассказать о замечательной утилите tail и привести готовые примеры использования.

Создайте следующий файл use_tail.txt в операционной системе Linux или Unix для практикующих примеров со следующим содержанием:

# cat /home/captain/use_tail.txt This is my unix/linux blog I will write some examples I will use tail with this file Ok. Let"s start it!

1. Вывод последних 10 строк.

По умолчанию, команда tail печатает последние 10 строк из файла:

# tail /home/captain/use_tail.txt This is my unix/linux blog I will write some examples I will use tail with this file Ok. Let"s start it!

2. Вывести последние N строк.

Используйте опцию «-n», чтобы напечатать последние N строк из файла. Следующий пример печатает последние 3 строки из файла:

# tail -n3 /home/captain/use_tail.txt I will use tail with this file Ok. Let"s start it!

3. Вывести строки из N-й строки.

Вы можете печатать строки, начиная с N-й строки в файле. Следующий пример печатает строки начиная с 4-й линии:

# tail -n+4 /home/captain/use_tail.txt I will use tail with this file Ok. Let"s start it!

4. Вывести последние n байт.

Использовать опцию «-c» для вывода последних N байт из файла. Следующий пример печатает последние 7 байт из файла:

# tail -c7 /home/captain/use_tail.txt rt it!

5. Print characters from the Nth byte

Используйте следующий символ «+» с опцией «-c» чтобы печатать символы с N-го байта. Следующий пример печатает символы с 69-го байта.

# tail -c+69 /home/captain/use_tail.txt I will use tail with this file Ok. Let"s start it!

Выводить последние строки из файла динамически (в режиме реального времени).

Опция «-f» выводит строки из файла, который динамично растет. При запуске команды «tail -f» с именем файла, он будет печатает последние 10 строк и ожидать новых линий, которые будут добавлены в файл. Всякий раз, когда новые линии добавляется в файл, команда tail также добавляет новые строки на стандартный вывод (на терминал). Опция «-f» полезна при отладке приложений.. Вы можете использовать опцию «-f» , чтобы начать анализировать вывод разных ошибок в режиме реального времени:

# tail -f /var/log/nginx/error-linux-notes.log

TAIL(1)

НАЗВАНИЕ
tail - выдача хвостовой части файла

СИНТАКСИС

Tail [+][-][число][l][b][c][f] [файл]

ОПИСАНИЕ
Команда tail копирует указанный файл на стандартный вывод, начиная с определенного места. Если файл не задан, то используется стандартный ввод.

Копирование начинается с позиции на расстоянии +число от начала или -число от конца исходного файла. Если число не указано, то принимается значение, равное 10. Должен быть указан ровно один из знаков + или -. Расстояние задается в строках, блоках или символах в соответствии с опцией l, b или c, поставленной после числа. Если единица измерения не задана, то расстояние измеряется в строках; разумеется, нельзя указывать больше одной единицы измерения.

При наличии опции f, если исходной файл не является каналом, программа tail, дойдя до его конца, не завершается, а входит в бесконечный цикл, в котором она секунду спит, а затем пытается прочитать и скопировать последующие записи из исходного файла. Такой режим можно использовать, чтобы следить за ростом файла, запись в который осуществляется каким-нибудь другим процессом. Например, команда

Tail -f f1 выдаст последние десять строк файла f1, за которыми последуют строки, добавленные к файлу f1 в промежуток времени между запуском и терминированием программы tail. В качестве другого примера рассмотрим команду tail -15cf f2 которая выдаст последние 15 символов файла f2, за которыми последуют строки, добавленные к файлу f2 в промежутке между запуском и терминированием tail.

СЮРПРИЗЫ
При адресации относительно конца файла информация накапливается в буфере, размер которого ограничен. В случае превышения размера выдаются последние 4096 байт.

В случае символьных специальных файлов может встречаться различного рода аномальное поведение.

Updated: 05/04/2019 by Computer Hope

If no file is specified, or if file is a dash ("- "), tail reads from standard input .

Syntax

tail [{-c |--bytes= }num ] [-f ] [--follow [= {name |descriptor }]] [-F ] [{-n |--lines= }num ] [--max-unchanged-stats [= num ]] [--pid= pid ] [{-p |--quiet |--silent }] [--retry ] [{-s |--sleep-interval= }num ] [{-v |--verbose }] [file ...] tail --help tail --version

Options

Option Description
-c [+ ]num ,
--bytes= [+ ]num
Output the last num bytes of each file .

You can also use a plus sign before num to output everything starting at byte num . For instance, -c +1 will print everything.

A multiplier suffix can be used after num to specify units: b (512), kB (1000), K (1024), MB (1000*1000), M (1024*1024), GB (1000*1000*1000), G (1024*1024*1024), and so on for T (terabyte), P (petabyte), E (exabyte), Z (zettabyte), Y (yottabyte).

-f ,
--follow [= {name |descriptor }]
This option will cause tail will loop forever, checking for new data at the end of the file(s). When new data appears, it will be printed.

If you follow more than one file, a header will be printed to indicate which file"s data is being printed.

If the file shrinks instead of grows, tail will let you know with a message.

If you specify name , the file with that name is followed, regardless of its file descriptor .

If you specify descriptor , the same file is followed, even if it is renamed . This is the default behavior.

-F "Follow and retry". Same as using --follow=name --retry .
-n num ,
--lines= num
Output the last num lines, instead of the default (10).

If you put a plus sign before num , tail will output all lines beginning with that line. For example, -n +1 will print every line.

--max-unchanged-stats= num If you are following a file with -f or --follow=name , tail continuously checks the file to see if its size has changed. If the size has changed, it reopens the file and looks for new data to print. The --max-unchanged-stats option reopens a file, even if its size has not changed, after every num checks.

This option is useful if the file might be spontaneously unlinked or renamed, such as when log files are automatically rotated.

--pid= pid When following with -f or --follow , terminate operation after process ID pid dies.
-q ,
--quiet ,
--silent
Never output headers.
--retry Keep trying to open a file even if it is temporarily inaccessible; useful with the --follow=name option.
-s num ,
--sleep-interval = num
When following with -f or --follow , sleep for approximately num seconds between file checks. With --pid= pid , check process pid at least once every num seconds.
-v ,
--verbose
Always print headers.
--help Display a help message, and exit.
--version Display version information, and exit.

Examples

tail myfile.txt

Outputs the last 10 lines of the file myfile.txt .

Tail -n 100 myfile.txt

Outputs the last 100 lines of the file myfile.txt .

Tail -f myfile.txt

Outputs the last 10 lines of myfile.txt , and monitors myfile.txt for updates; tail then continues to output any new lines that are added to myfile.txt .

Tip: tail will follow the file forever. To stop it, press CTRL + C .

Tail -f access.log | grep 24.10.160.10

This is a useful example of using tail and grep to selectively monitor a log file in real time.

In this command, tail monitors the file access.log . It pipes access.log "s final ten lines, and any new lines added, to the grep utility . grep reads the output from tail , and outputs only those lines which contain the IP address 24.10.160.10 .

Related commands

cat — Output the contents of a file.
head — Display the first lines of a file.
more — Display text one screen at a time.
pg — Browse page by page through text files.

Утилита cat объединяет файлы и выводит результат на стандартный вывод. Это одна из наиболее широко используемых команд. Вы можете использовать:

Вы можете использовать опцию -n для вывода последних N строк файла. Например, для вывода последних 2-х строк наберите:

Как и в случае с tail вы можете использовать опцию -n для указания количества выводимых строк. Например, для вывода первых 2-х строк наберите:

Затем вторая часть команды отберет последние 2 строки и выведет их на экран. Таким же способом вы можете выбрать 20-ю от конца файла строку:

Теперь мы можем изменить предыдущую команду следующим образом:

У команды tee есть полезная опция ( -a ), которая позволяет вам дописать данные в конец существующего файла.

Давайте вернемся назад к команде tail . Такие файлы как журналы обычно динамически изменяются, т.к. демон постоянно добавляет в них отчет о совершенных действиях или событиях. Поэтому, если вам нужно наблюдать за изменениями в лог-файле в режиме реального времени, тогда вам нужно воспользоваться преимуществами опции -f :

# tail -f /var/log/mail/info

В этом случае все изменения в файле /var/log/mail/info будут немедленно выводиться на экран. Использование команды tail с опцией -f весьма полезно, когда вам нужно знать, как работает ваша система. Например, наблюдая за файлом журнала /var/log/messages , вы сможете всегда получать обновленную информацию о системных сообщенях и различных демонах.

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

grep: Поиск строк в файлах

Ни имя команды, ни ее аббревиатура (“General Regular Expression Parser” - синтаксический анализатор общих регулярных выражений) не слишком интуитивны, но ее действие и ее использование довольно просты для понимания: grep выполняет поиск в одном или нескольких файлах по шаблону, заданному в качестве аргумента. Ее синтаксис:

Если указано несколько файлов, в отображаемом результате их имена будут выводиться перед каждой найденной строкой. Для предотвращения вывода этих имен используйте опцию -h ; используйте опцию -l для вывода только имен файлов с найденными совпадениями. Шаблон - это регулярное выражение, хотя в большинстве случаев он состоит просто из одного слова. Наиболее часто используемые опции:

  • -i : поиск без учета регистра (т.е. игнорирование разницы между верхним и нижним регистром);
  • -v : обратный поиск. Вывод строк, которые не соответствуют шаблону;
  • -n : вывод номера строки для каждой из найденных строк;
  • -w : сообщает grep"у, что шаблон должен совпадать со всем словом.

Итак, давайте теперь вернемся к анализу лог-файла почтового демона. Нам необходимо найти все строки в файле /var/log/mail/info , содержащие шаблон “postfix”. Для этого мы вводим такую команду:

Если нам нужно найти все строки, не содержащие шаблона “postfix”, нам надо будет воспользоваться опцией -v :

В этом случае команда grep использована дважды. Это разрешается, но не совсем красиво. Мы можем получить тот же результат при помощи утилиты fgrep . Сначала нам нужно создать файл, содержащий шаблоны, записанные в столбик. Такой файл может быть создан следующим образом (мы используем patterns.txt в качестве имени файла):

Файл ./patterns.txt может содержать сколько угодно шаблонов. Каждый из них должен быть введен в виде одной строки. Например, для выборки сообщений о письмах, успешно отправленных на адрес [email protected] , достаточно будет добавить адрес этого электронного ящика в наш файл ./patterns.txt , выполнив следующую команду:

Здесь мы применили описанный выше фильтр и отправили результат через канал в команды tail и head . Они выбрали из данных предпоследнее значение.

wc: Подсчёт элементов в файлах

Команда wc (Word Count - подсчёт слов) используется для подсчёта числа строк и слов в файлах. Она также полезна для подсчёта байтов, символов и длины самой длинной строки. Её синтаксис:

Список полезных опций:

  • -l : вывод количества новых строк;
  • -w : вывод количества слов;
  • -m : вывод общего количества символов;
  • -c : вывод количества байт;
  • -L : вывод длины самой длинной строки в заданном тексте.

По умолчанию команда wc выводит количество новых строк, слов и символов. Вот несколько примеров использования:

Если нам нужно определить число пользователей в нашей системе, мы можем ввести:

В предыдущем разделе мы получили список сообщений об успешно отправленных письмах на адреса, перечисленные в нашем файле ./patterns.txt . Если нам нужно узнать количество таких сообщений, мы можем перенаправить наш отфильтрованный результат через канал в команду wc :

Давайте отсортируем часть файла /etc/passwd . Как видите сам по себе этот файл не отсортирован:

$ cat /etc/passwd

Если нам нужно отсортировать его по полю login