Files
lpic_1-101/ru/103_2.md
T
2018-04-05 11:51:16 +03:00

99 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
**103.2** Управление текстовым потоком
Студент должен уметь управлять фильтровать текстовый поток
**Изучаем** :
- применение текстовых фильтров с использованием встроенных команд UNIX
**Термины и утилиты: **
- cat
- cut
- expand
- fmt
- head
- join
- less
- nl
- od
- paste
- pr
- sed
- sort
- split
- tail
- tr
- unexpand
- uniq
- wc
Множество файлов в Linux неудобны для восприятия без предварительного форматирования, кроме того процесс обработки текстовой информации часто требует ее форматирования, обрезания, сортировки и т.д. Linux предлагает широкий набор инструментов редактирования текстового вывода, при этом следует заметить что указанные инструменты не затрагивают исходный файл (или текстовый поток), а форматируют его, выдавая полученный результат в консоль или другой файл.
Простой вывод текста (без корректировки содержимого):
Для вывода содержимого файла или объединения нескольких файлов на выводе используется команда **cat** , например:
**с**** at **** 1. ****txt** **2.**** txt **** > 3. ****txt**** ** _(передать содержимое двух файлов в третий);_
Команда **join** объединяет строки нескольких файлов по общему полю и отправляет их на стандартный вывод.
Команда **less** загружает файл постепенно и также отправляет его на вывод (удобно для больших файлов).
Команда **nl** нумерует строки.
Команда **pr** показывает, как содержимое файла будет выглядеть при выводе его на печать.
Команда **paste** вставляет строки из одного файла в другой и отправляет результат на стандартный вывод.
Команда **head** показывает первые строки файла, а **tail** последние.
Например:
**head** ****** n **** 2 / ****var**** / ****log**** / ****syslog**** ** _(вывести первые две строчки файла);_
**tail** ****** f **** / ****var**** / ****log**** / ****syslog**** ** _(показывать последние строки файла, отображая содержимое в реальный момент времени);_
Команда **sort** может отсортировать содержимое файла по какому-нибудь признаку, например:
**sort** **1.**** txt **** ** _(отсортировать строки по алфавиту);_
Команда **wc** позволяет посчитать количество символов и т.д. в текстовом потоке, например:
**wc** **1.**** txt** _(посчитать количество строк, символов, слов);_
Вывод форматированного текста (с корректировкой содержимого):
Команда **cut** используется для обрезания содержимого файлов на выводе, например:
**с**** ut **** ****c** **2,3,4,5,10 1.**** txt **** ** _(показывать только символы на указанных позициях: 2,3,4,5,10);_
Команда **expand** превращает символы табуляции в несколько пробелов, а **unexpand** наоборот – пробелы в символы табуляции.
Команда **fmt** предназначена для форматирования текста различными способами, например:
**fmt** **1.**** txt **** ** _(вывести содержимое файла в одну строку);_
**fmt** ****** w **** 10 1. ****txt**** ** _(вывести содержимое файла в строки не больше 10 символов каждая);_
Команда **od** предназначена для конвертации текста в другой формат, например:
**od** ****** c **** 1. ****txt**** ** _(отобразить в кодировке_ _ASCI__);_
Команда **tr** предназначена для замены и удаления символов в текстовом потоке, например:
**echo** **"**** HELLO ****" |** **tr** ****** t ****L**** l **** ** _(заменить " __L__" на " __l__" в полученном на вводе тексте);_
Команда **split** может разбить файла по каким-либо критериям, например:
**split** ****** l **** 2 1. ****txt** _(разбить содержимое файла по две строчки);_
Команда **uniq** предназначена для поиска повторяющихся строк, например:
**uniq** ****** u **** 1. ****txt** _(показать только уникальные строки);_
**Sed** – отдельный мощный инструмент, понимающий групповые символы, шаблоны и т.д. Будет рассмотрен немного подробнее в дальнейших урока. Работает, например, так:
**sed e 's/socks/people/' 1.txt ** _( __заменить__ в __файле__ слово_ _"socks"_ _на_ _"people");_