Удаление строк из файла с использованием sed

Задать вопрос
В Unix команда SED обеспечивает эффективный и универсальный способ удаления одной или нескольких строк из указанного файла по желанию пользователя.

Эта утилита используется для работы с командной строкой Unix. С ее помощью можно удалять из файла выражения, которые могут быть идентифицированы с помощью определяющего разделителя (например, запятая, табуляция или пробел), по номеру строки или путем поиска строки, выражения или адреса строки в синтаксисе sed.

Sed: удалить одну или несколько строк из файла

Вот как можно удалить одну или несколько строк из файла.

Синтаксис

sed '{[/]<n>|<string>|<regex>[/]}d'<fileName>       
sed '{[/]<adr1>[,<adr2>][/]d'<fileName>

/.../=разделители


n = номер строки

string = ряд символов, найденный в строке

regex = регулярное выражение, соответствующее искомому шаблону

addr = адрес строки (номер или шаблон)

d = удалить (delete)

Примеры Sed

Вот несколько примеров использования приведенного выше синтаксиса.


Используйте следующий код, чтобы удалить третью строку:

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

Изображение: © Linux.