😡 Как удалить строки, соответствующие определенному шаблону в файле, используя SED

by itisgood

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

SED – это потоковый редактор, который выполняет базовую фильтрацию текста и преобразования входного потока (файла или ввода из конвейера).

Удалить строки, соответствующие определенному шаблону в файле, используя SED

В нашем предыдущем руководстве мы рассмотрели, как удалять сктроки, соответствующие определенным шаблонам в VIM.

Вы можете проверить этот метод, перейдя по ссылке ниже;

? Удалить строки, соответствующие определенному шаблону в файле, используя VIM

Теперь давайте рассмотрим различные примеры удаления строк, соответствующих определенному шаблону, в файле с помощью SED.

Для демонстрации мы будем использовать семь цветов радуги в файле.

cat colors           
This is color red
This is color orange
This is color yellow
This is color green
This is color blue
This is color indigo
This is color violet

Как и в VIM, мы будем использовать команду d для удаления определенного пространства шаблонов с помощью SED.

Для начала, если вы хотите удалить строку, содержащую ключевое слово, вы должны запустить sed, как показано ниже.

sed -i '/pattern/d' file

Где опция -i указывает место в файл.

Если вам нужно выполнить пробный прогон (без фактического удаления строки с ключевым словом) и вывести результат в стандартный вывод, опустите опцию -i.

Например, удалите строку, содержащую ключевое слово green, которую вы запустите;

sed '/green/d' colors
This is color red
This is color orange
This is color yellow
This is color blue
This is color indigo
This is color violet

Точно так же вы можете запустить команду sed с опцией -n и командой p, (!p).

sed -n '/green/!p' colors           
This is color red
This is color orange
This is color yellow
This is color blue
This is color indigo
This is color violet

Удалить строки, содержащие несколько ключевых слов, например, удалить строки с ключевым словом green или строки с ключевым словом violet.

sed '/green\|violet/d' colors
This is color red
This is color orange
This is color yellow
This is color blue
This is color indigo

Если вам нужно удалить строки, но создать резервную копию исходного файла, используйте параметр -i в формате -i.bak.

Это создаст файл .bak оригинального имени файла.

sed -i.bak '/green\|violet/d' colors

Удалить все строки, кроме тех, которые содержат определенный шаблон или ключевое слово;

sed '/green/!d' colors
This is color green
sed '/green\|violet/!d' colors 
This is color green
This is color violet

Чтобы удалить строки, начинающиеся с определенного символа или шаблона, например, строки комментариев, начинающиеся с # или строки, начинающиеся с ключевого слова amos.

sed '/^#/d' colors
sed '/^amos/d' colors

Удалить строки, заканчивающиеся определенным шаблоном или символом, например, удалить строки, начинающиеся с символа o или ключевого слова amos;

sed '/o$/d' colors
sed '/amos$/d' colors

Чтобы объединить вышеперечисленное, вы можете удалить строки, заканчивающиеся буквой o или ключевым словом amos;

sed '/o$\|amos$/d' colors

Удалить пустые строки

sed '/^$/d' colors

Удалить пустые строки или строки, содержащие один или несколько пробелов;

sed '/^ *$/d' colors

Удалить пустые строки или строки, которые на одной или нескольких вкладках;

sed '/^\t*$/d' colors

Что ж, это лишь малая часть того, что мы могли бы рассказать о том, как удалять строки, соответствующие определенному шаблону в файле, используя SED.

Не стесняйтесь добавлять больше примеров и предложений в комментариях ниже.

 

You may also like

Leave a Comment