Работа с текстовыми файлами с помощью команд (sed, grep, awk)

Команды sed, grep и awk являются мощными инструментами для работы с текстовыми файлами в Linux/Unix системах. Каждая из них имеет свои особенности и предназначение:

Команда grep

Команда grep используется для поиска строк, которые соответствуют заданному шаблону. Она позволяет быстро найти информацию в текстовых файлах.

Основной синтаксис

grep [опции] [шаблон] [файл]

Примеры использования

  1. Поиск строк, содержащих шаблон:

    grep "pattern" filename.txt

    Ищет строки, содержащие pattern в filename.txt.

  2. Поиск без учёта регистра:

    grep -i "pattern" filename.txt

    Использует регистронезависимый поиск.

  3. Поиск и вывод номера строки:

    grep -n "pattern" filename.txt

    Показывает номера строк вместе с совпадениями.

  4. Поиск строк, не содержащих шаблон:

    grep -v "pattern" filename.txt

    Выводит все строки, которые не содержат pattern.

  5. Поиск шаблона в нескольких файлах:

    grep "pattern" *.txt

    Ищет pattern во всех текстовых файлах в текущем каталоге.

  6. Поиск шаблона с выводом контекста:

    grep -C 3 "pattern" filename.txt

    Показывает 3 строки до и после строки с pattern.

  7. Поиск и вывод только уникальных строк:

    grep -o "pattern" filename.txt | sort | uniq

    -o выводит только совпадения шаблона.

Команда sed

Команда sed (stream editor) предназначена для выполнения различных текстовых операций, таких как замена, удаление, вставка строк и т.д.

Основной синтаксис

sed [опции] 'команда' [файл]

Примеры использования

  1. Замена текста:

    sed 's/old_text/new_text/g' filename.txt

    Заменяет все вхождения old_text на new_text в filename.txt. Флаг g указывает на глобальную замену.

  2. Замена текста только в определённых строках:

    sed '2s/old_text/new_text/' filename.txt

    Заменяет old_text на new_text только во второй строке.

  3. Удаление строк, содержащих шаблон:

    sed '/pattern/d' filename.txt

    Удаляет строки, содержащие pattern.

  4. Вставка строки перед указанной строкой:

    sed '2i\New line of text' filename.txt

    Вставляет "New line of text" перед второй строкой.

  5. Добавление строки после указанной строки:

    sed '2a\New line of text' filename.txt

    Добавляет "New line of text" после второй строки.

  6. Удаление пустых строк:

    sed '/^$/d' filename.txt

    Удаляет все пустые строки.

  7. Замена текста и запись в новый файл:

    sed 's/old_text/new_text/g' filename.txt > newfile.txt

    Записывает результат замены в новый файл newfile.txt.

Команда awk

Команда awk — это мощный текстовый процессор, который используется для обработки и анализа текстовых данных, особенно структурированных данных.

Основной синтаксис

awk 'pattern { action }' [файл]

Примеры использования

  1. Вывод определённых столбцов:

    awk '{print $1, $3}' filename.txt

    Выводит первый и третий столбцы из filename.txt. По умолчанию столбцы разделены пробелами или табуляцией.

  2. Вывод строк, соответствующих шаблону:

    awk '/pattern/' filename.txt

    Выводит строки, содержащие pattern.

  3. Подсчёт количества строк:

    awk 'END {print NR}' filename.txt

    NR — переменная, содержащая количество строк. Выводит общее количество строк в файле.

  4. Суммирование значений в столбце:

    awk '{sum += $2} END {print sum}' filename.txt

    Суммирует значения во втором столбце и выводит результат.

  5. Форматированный вывод данных:

    awk '{printf "Name: %-10s Age: %-3s\n", $1, $2}' filename.txt

    Форматирует вывод с использованием спецификаторов %-10s и %-3s для имени и возраста соответственно.

  6. Фильтрация строк по значению в столбце:

    awk '$3 > 100' filename.txt

    Выводит строки, где значение в третьем столбце больше 100.

  7. Использование разделителей:

    awk -F, '{print $1, $2}' filename.csv

    Использует запятую , в качестве разделителя полей для обработки CSV файлов.

Заключение

Команды sed, grep и awk позволяют эффективно выполнять различные операции с текстовыми файлами. grep удобен для поиска шаблонов, sed для выполнения редакторских операций, а awk для обработки и анализа структурированных данных. Знание этих инструментов значительно упрощает работу с текстовыми данными в командной строке.

Last updated