В Unix команда SED удаляет одну или несколько строк из указанного файла по желанию пользователя. Эта утилита используется для работы с командной строкой Unix, для удаления из файла выражений, которые могут быть идентифицированы с помощью определяющего разделителя (например, запятая, табуляция или пробел), по номеру строки или путем поиска строки, выражения или адреса строки в синтаксисе sed.
Вот как можно удалить одну или несколько строк из файла.
sed '{[/]<n>|<string>|<regex>[/]}d'<fileName>
sed '{[/]<adr1>[,<adr2>][/]d'<fileName>
/.../=разделители
n = номер строки
string = ряд символов, найденный в строке
regex = регулярное выражение, соответствующее искомому шаблону
addr = адрес строки (номер или шаблон)
d = удалить (delete)
Вот несколько примеров использования приведенного выше синтаксиса.
Используйте следующий код, чтобы удалить третью строку:
sed '3d' fileName.txt
Удалите строку, содержащую ряд букв «awk», используя:
sed '/awk/d' filename.txt
Вы можете удалить последнюю строку, введя:
sed '$d' filename.txt
Или удалить все пустые строки:
sed '/^$/d' filename.txt
sed '/./!d' filename.txt
Удалить строку, соответствующую регулярным выражениям (путем исключения одного из них, содержащего цифровые символы, как минимум 1 цифру, расположенные в конце строки):
sed '/[0-9/][0-9]*$/d' filename.txt
Удалить интервал между строками 7 и 9:
sed '7,9d' filename.txt
Та же операция, что и приведенная выше, но с заменой адреса параметрами:
sed '/-Start/,/-End/d' filename.txt
Вышеприведенные примеры отображают изменения только при открытии файла (stdout1 = screen).
Для постоянных изменений в старых версиях (ниже 4) используйте временный файл для GNU sed с использованием команды -i [suffix]:
sed -i".bak" '3d' filename.txt
Изображение: © John Schnobrich - Unsplash.com