В этом руководстве мы узнаем, как удалять строки, соответствующие определенному шаблону в файле, используя 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.
Не стесняйтесь добавлять больше примеров и предложений в комментариях ниже.