Удаление n-ой строки из файла
Представьте, что вам нужно удалить 7ую строку в файле.
Вы можете использовать команду sed следующим образом
Код: Выделить всё
sed -i '7d' filename
-i: Эта опция включает редактирование на месте. По умолчанию sed отображает только вывод. С опцией -i он изменяет фактический файл, не отображая его на дисплее.
7d: Здесь 7 – это номер строки, а d указывает на удаление строки.
filename: Это файл, который вы хотите изменить. Вы также можете указать абсолютный или относительный путь, если файл находится в другом каталоге.
Позвольте мне показать на реальном примере.
Вот пример текстового файла с именем agatha.txt:
Код: Выделить всё
The Mystery of the Blue Train
The Seven Dials Mystery
The Murder at the Vicarage
Giant's Bread
The Floating Admiral
The Sittaford Mystery
Peril at End House
Lord Edgware Dies
Код: Выделить всё
sed '4d' agatha.txt
Код: Выделить всё
The Mystery of the Blue Train
The Seven Dials Mystery
The Murder at the Vicarage
The Floating Admiral
The Sittaford Mystery
Peril at End House
Lord Edgware Dies
Используйте sed следующим образом:
Код: Выделить всё
sed -i '1d' filename
Удаление последней строки с помощью sed
Вы научились удалять определенную строку, но что если вам нужно удалить последнюю строку?
Вы всегда можете получить общее количество строк в файле с помощью команды wc и использовать это число в sed.
Однако sed имеет специальный способ удаления последней строки файла.
Теперь вам больше не нужно беспокоиться о количестве строк.
Код: Выделить всё
sed -i '$d' filename.txt
Аналогично тому, что вы видели ранее, вы также можете удалить диапазон строк из файла.
Предположим, вам нужно удалить строки с 11 по 15, вы можете указать диапазон следующим образом:
Код: Выделить всё
sed -i '11,15d' filename
Удаление строк, содержащих шаблон
Вы также можете использовать sed для удаления всех строк, которые содержат заданную строку или соответствуют определенному шаблону.
Команда, показанная ниже удалит все строки, содержащие слово ‘string’:
Код: Выделить всё
sed -i '/string/d' filename
Вы также можете использовать regex-шаблон вместо обычной строки.
Удаление строк, начинающихся со слова
Если вы хотите удалить все строки, начинающиеся с определенного слова или буквы, вам просто нужно указать шаблон regex следующим образом:
Код: Выделить всё
sed -i '/^word/d' filename
Прежде чем закончить эту статью, позвольте мне быстро рассказать, как вы можете удалить все пустые строки с помощью sed:
Код: Выделить всё
sed -i '/^$/d' filename