В определенных случаях нам нужно удалить определенную строку из файла или нескольких, например, со мной случилось, что у меня был целый список файлов, и мне нужно удалить строку № 27 из всех них (строка № 27 - это то, что ACL, нормы, правила, конфигурации), я могу либо редактировать файл за файлом, либо просто достичь того, что мне нужно, с помощью команды СЕПГ и сценарий bash (необязательно).
Но давайте попробуем один файл несколько проще.
У нас есть файл дистрибутивы-deb.txt который содержит это:
Debian
Kubuntu
Archlinux
Soluses
мята
Другими словами, файл дистрибутивы-deb.txt - это то, в которое мы поместим дистрибутивы на основе Debian, но там мы видим, что в строке №3 находится «archlinux», дистрибутив, который явно не имеет ничего общего с Debian, поэтому мы должны исключить эту строку. Чтобы исключить строку № 3 этого файла, мы поместим следующее:
sed "3d" distros-deb.txt > distros-deb-ok.txt
Объяснить эту строку довольно просто, используя жаждущий "3d" мы указываем, что удалим строку №3 с дистрибутивы-deb.txt Мы указываем, с каким файлом работать, то есть удаляем строку №3 этого файла, и до этого момента, если мы нажмем Enter, она покажет нам, что мы хотим, но в терминале, поэтому с > дистрибутив-деб-ок.txt мы указываем, что вместо отображения результата в терминале он помещает его в файл с этим именем.
Что просто?
Кроме того, мы можем избежать использования > дистрибутив-деб-ок.txt используя правильный параметр СЕПГ, параметр -i
То есть на случай, если мы хотим удалить строку из файла и сохранить ее с тем же именем (а не в другом файле), просто добавьте параметр -i :
sed -i "3d" distros-deb.txt
Это удалит строку №3 из distros-deb.txt и сохранит ее.
Что, если мне нужен диапазон строк, то есть удалить строку №3, но также строки №4 и №5? Для этого мы ставим диапазон от 3 до 5, то есть:
sed -i "3,5d" distros-deb.txt
И он покажет мне только Debian и Kubuntu
Так что, если я хочу удалить строку со 2 до последней, когда я не знаю всего строк?
Просто используйте символ доллара - »$
sed -i "2,$d" distros-deb.txt
В случае, если вы хотите исключить из первой строки до # 4, мы просто помещаем значение 1 в начало:
sed -i "1,4d" distros-deb.txt
Это было все, очень полезный совет, когда вы хотите создавать сценарии bash для автоматизации задач, и вам нужно изменить и удалить строки файлов конфигурации, чтобы изменить, мы можем использовать СЕПГ o Perl, а также устранять мы уже умеем это делать с помощью sed
привет