Go back

Краткий обзор опций команд bash


Ведение

В данном задании исследовались полезные функции и опции sed. Sed - Это потоковый текстовый редактор, который может построчно изменять данные, основываясь на заданных разработчиком наборах правил. Обычные текстовые редакторы вначале загружают весь текст документа, а затем применяют к нему команды по одной, в то время как sed вначале загружает в себя набор команд, а затем применяет весь набор команд к каждой строчке текста. Так как одновременно в памяти находится только одна строка, sed может обработать произвольно большие текстовые файлы. Язык sed является Тьюринг-полным языком, то есть с помощью него можно создать машину Тьюринга. Очевидно, что в sed очень много разных комманд, модификаций и функций, но в этом обзоре я включила только некоторые опции, которые показались мне интересными.В источники я включила ссылку на любопытную статью с обзором комманд sed на Хабре, где хорошо представлено всё многообразие возможностей sed.

Описание возможностей sed

Простейший пример применения sed - это замена фрагмента в строке. Выглядеть комманда будет приблизительно так: sed 's/old text/new text/ example.txt'. S обозначает substitute, old text - фрагмент в строке, который нужно заменить, new text - новый фрагмент. Надо заметить, что sed замещает только первое вхождение в строку, чтобы заменять, скажем, n-ное вхождение нужно добавить /n, где n - это число, либо комманда (g - заменить всё, p - вывод строк, в которых произведены изменения, w позволяет записывать результат в новы файл).
Флаг -e
Если фрагментов, которые нужно заменить, несколько, то можно либо писать комманды, начинающиеся с s через ; перед именем файла, либо, используя флаг e, написать sed -e ', нажать Enter и перечилять фрагменты(один на строчку), пока они не закончатся (далее следует закрыть кавычку и написать название файла).
Флаг -f

Если команд sed очень много, удобно хранить их в качестве файла. Тогда шаблон команды будет выглядеть так: sed -f Many_commands.txt testfile.txt

Флаг -n

Нужен для подавления вывода, к примеру, когда нужно вывести только изменяемые фрагменты, часто используется с командой p.

Флаг -i

В присутствии этого флага будет редактироваться сам файл, а не просто взятые из него строчки.

Флаг -s

Иногда нужно, чтобы команда выполнялась сразу в нескольких файлах. Однако, если записать их просто в строку, sed воспримет их как один файл и выполнит команду только в первом. Для того, чтобы их разделить, нужен флаг -s (от англ. separate).



Источники:

1. https://habr.com/ru/company/ruvds/blog/327530/

2. https://ru.wikipedia.org/wiki/Sed

3. Справочная страница коммандной строки