Работа с текстом

Общие команды

  • more - первоначальная утилита для просмотра текста постранично

  • less - более продвинутая утилита, которая позволяет перемещаться по тексту не только вперед, но и назад

  • head - показывает первые 10 линий текстового файла

  • tail - показывает последние 10 линий текстового файла

    • -n <число> - показывает заданное число строк в начале для head или в конце для tail

    • head и tail можно скомбинировать:

[admin@centos8 ~]$ head /etc/passwd | tail -n 1
operator:x:11:0:operator:/root:/sbin/nologin
  • tail -f - показывать в режиме реального времени изменения в файле

    • наиболее часто используется при работе с логами, например tail -f /var/log/messages

  • cat - отображает содержимое файла на экран

    • cat -A - показать все непечатные символы

    • cat -b - показать с нумерацией линий

    • cat -s - не показывать пустые повторяющиеся строки

  • tac - аналог cat, но отображает текст в обратном порядке

  • cut - фильтрация вывода

  • sort - сортировка вывода

[admin@centos8 ~]$ cut -f 3 -d : /etc/passwd | sort -n | less
  • tr - транслитерация вывода

[admin@centos8 ~]$ cut -f 1 -d : /etc/passwd | sort | tr [:lower] [:upper]
ADM
ADMIN
AVAHI
BIN
CHRONY
CLEVIS
COCKPIT-WS
COLORD
DAEMON
DBUS
DNSMASQ
FTP

Grep

  • Generic Regular Expression Parser

  • Утилита для поиска текста в файлах или выводе

    • ps aux | grep ssh - поиск в выводе ssh

    • grep linda * - поиск файлов в текущей директории с текстом linda

    • grep -i linda * - поиск без учета регистра

    • grep -A5 linda /etc/passwd - отображение строк после искомого слова (число отвечает за количество пропускаемых строк для отображения)

    • grep -B5 linda /etc/passwd - отображение строк перед искомым словом

    • grep -R root /etc - рекурсивный поиск

    • grep -l - отображение имен файлов

Регулярные выражения

  • Регулярные выражения есть текстовые паттерны, используемые различными утилитами, такими как grep, vim, awk, sed

  • Регулярные выражения не есть глоббинг, так как применяются не к именам, а к содержимому файлов

  • Регулярные выражения могут иметь расширенный режим (extended)

    • egrep вместо grep с флагом "-e"

  • Документация хранится в man 7 regex

  • Регулярные выражения основаны на атомах, которые определяют текст для поиска соответствия

    • Атомы могут быть в виде одного символа, дипазона символов или точки

    • Атомы могут быть классом, например [[:alpha:]], [[:upper:]], [[:digit:]], [[:alnum:]]

  • Оператор повтора (repetition operator) определяет как часто встречается символ

  • Индикатор определяет, где найти следующий символ

  • Выражения должны быть выделены кавычками

  • Наиболее распространенные выражения:

    • "^" - начало строки

    • "$" - конец строки

    • "\<" - начало слова

    • "\>" - конец слова

    • "*" - ноль или более раз

    • "+" - один или более раз

    • "?" - ноль или один раз

    • "{n}" - точное n количество раз

Awk

  • Продвинутая утилита для текстового процессинга, которая специализируется на извлечении данных и отчетах

  • Может производить действия на основе селекторов

[admin@centos8 ~]$ awk -F : '/admin/ { print $4 }' /etc/passwd
1000
[admin@centos8 ~]$ awk -F : '{ print $NF }' /etc/passwd 
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown
/sbin/halt
/sbin/nologin
/bin/bash

Sed

  • Stream Editor

  • Используется для поиска и изменения текста на основе совпадений

  • Показать, например, четвертую строку файла:

[admin@centos8 ~]$ sed -n 4p test
dgdfkgjdhfkgjdfk
  • Пример замены текста ("-i" - записать в файл):

[admin@centos8 ~]$ sed -i s/dgdfkgjdhfkgjdfk/FOUR/g test
[admin@centos8 ~]$ sed -n 4p test
FOUR
  • Удаление строки ("-e" - редактировать):

[admin@centos8 ~]$ sed -i -e '2d' test
[admin@centos8 ~]$ sed -n 4p test
Five

Last updated