удалить строку по номеру bash
Удаление строк из файла с использованием sed
В Unix команда SED удаляет одну или несколько строк из указанного файла по желанию пользователя. Эта утилита используется для работы с командной строкой Unix, для удаления из файла выражений, которые могут быть идентифицированы с помощью определяющего разделителя (например, запятая, табуляция или пробел), по номеру строки или путем поиска строки, выражения или адреса строки в синтаксисе sed.
Sed: удалить одну или несколько строк из файла
Вот как можно удалить одну или несколько строк из файла.
Синтаксис
string = ряд символов, найденный в строке
regex = регулярное выражение, соответствующее искомому шаблону
addr = адрес строки (номер или шаблон)
Примеры Sed
Вот несколько примеров использования приведенного выше синтаксиса.
Используйте следующий код, чтобы удалить третью строку:
Удалите строку, содержащую ряд букв «awk», используя:
Вы можете удалить последнюю строку, введя:
Или удалить все пустые строки:
Удалить строку, соответствующую регулярным выражениям (путем исключения одного из них, содержащего цифровые символы, как минимум 1 цифру, расположенные в конце строки):
Удалить интервал между строками 7 и 9:
Та же операция, что и приведенная выше, но с заменой адреса параметрами:
Вышеприведенные примеры отображают изменения только при открытии файла (stdout1 = screen).
Для постоянных изменений в старых версиях (ниже 4) используйте временный файл для GNU sed с использованием команды -i [suffix]:
Удалить конкретные номера строк из текстового файла с помощью sed?
Я хочу удалить один или несколько конкретных номеров строк из файла. Как бы я сделал это с помощью sed?
6 ответов:
Если вы хотите удалить строки с 5 по 10 и 12:
выводит результаты на экран. Если вы хотите сохранить результаты в тот же файл:
это создаст резервную копию файла до file.bak и удалить данной линии.
вы можете удалить одну строку с ее номером строки sed-i ’33d’ file
это приведет к удалению строки на 33 номер строки и сохранить обновленный файл.
это очень часто симптом антиобразец. Инструмент, который произвел номера строк, вполне может быть заменен на тот, который сразу удаляет строки. Например:
(где deletelines это утилита, которую вы воображаете, что вам нужно) то же самое, что и
это принимает файл номеров строк, по одному на строку, и производит, на стандартном выходе, те же номера строк с d добавляются после каждого. Это действительно sed скрипт, который мы можем сохранить в файл, или (на некоторых платформах) трубу в другой sed например:
Я хотел бы предложить обобщение с awk.
когда файл состоит из блоков фиксированного размера и строки для удаления повторяются для каждого блока, awk может отлично работать таким образом
в этом примере размер блока составляет 2000, и я хочу напечатать строки [1..713] и [1026..1029].
Как удалить определенные строки из файла с помощью sed
Но давайте попробуем один файл несколько проще.
У нас есть файл distros-deb.txt который содержит это:
sed «3d» distros-deb.txt > distros-deb-ok.txt
Объяснить эту строку довольно просто, используя жаждущий «3d» мы указываем, что удалим строку №3 с distros-deb.txt Мы указываем, с каким файлом работать, то есть удаляем строку №3 этого файла, и до этого момента, если мы нажмем Enter, она покажет нам, что мы хотим, но в терминале, поэтому с > дистрибутив-деб-ок.txt мы указываем, что вместо отображения результата в терминале он помещает его в файл с этим именем.
Кроме того, мы можем избежать использования > дистрибутив-деб-ок.txt используя правильный параметр СЕПГ, параметр -i
То есть на случай, если мы хотим удалить строку из файла и сохранить ее с тем же именем (а не в другом файле), просто добавьте параметр -i :
Это удалит строку №3 из distros-deb.txt и сохранит ее.
Что, если мне нужен диапазон строк, то есть удалить строку №3, но также строки №4 и №5? Для этого мы ставим диапазон от 3 до 5, то есть:
И он покажет мне только debian и kubuntu 😀
Так что, если я хочу удалить строку со 2 до последней, когда я не знаю всего строк?
В случае, если вы хотите исключить из первой строки до # 4, мы просто помещаем значение 1 в начало:
Это было все, очень полезный совет, когда вы хотите создавать сценарии bash для автоматизации задач, и вам нужно изменить и удалить строки файлов конфигурации, чтобы изменить, мы можем использовать СЕПГ o Perl, а также для устранения мы уже знаем, как это сделать с помощью sed 😉
Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.
Полный путь к статье: Из Linux » Рекомендованный » Как удалить определенные строки из файла с помощью sed
Команда Sed для удаления строки
Главное меню » Linux » Команда Sed для удаления строки
Эта статья продемонстрирует, как использовать sed для удаления строки из текста.
Sed в Linux
Полное имя sed дает нам представление о методе его работы. Sed принимает вводимый текст как «поток». Текст может поступать откуда угодно – из текстового файла или стандартного вывода (STDOUT). После ввода данных sed работает с ним построчно.
Для демонстрации я сгенерировал простой текстовый файл.
Удаление строки с помощью sed
Чтобы удалить строку, мы воспользуемся командой sed «d». Обратите внимание, что вы должны объявить, какую строку нужно удалить. В противном случае sed удалит все строки.
Удалить одну строку
Следующая команда sed удалит первую строку текста.
В основном, чтобы удалить строку, вам нужен номер строки целевой строки. Удалим строку 5.
Чтобы удалить последнюю строку текстового файла, вместо ручного вычисления номера строки используйте «$».
Удалить диапазон строки
Sed может удалить ряд строк. Здесь минимальное значение строки равно 1, а максимальное значение строки – 5. Чтобы объявить диапазон, мы используем запятую (,).
Удалить несколько строк
Что, если строки, которые вы хотите удалить, не находятся в фиксированном диапазоне? Взгляните на следующую команду sed. Обратите внимание, что мы используем точку с запятой (;) в качестве разделителя. По сути, каждый параметр с разделителями представляет собой отдельную команду sed.
Удалить все строки, кроме указанного диапазона
В следующем примере sed сохранит только строки, описанные в диапазоне. Здесь, “!” – оператор отрицания, указывающий sed сохранить определенные строки.
Удалить пустые строки
Если в тексте есть несколько пустых или пустых строк, следующая команда sed удалит их все.
Удалить линии по шаблону
Sed может искать определенный узор и выполнять указанные действия на линии. Мы можем использовать эту функцию для удаления определенных строк, соответствующих шаблону.
Давайте посмотрим на следующую демонстрацию. Sed удалит любую строку, содержащую строку «the».
Мы также можем описать несколько строк для поиска. Каждая строка разделяется символом «\|».
Удалить строки, начинающиеся с определенного символа
Чтобы обозначить начало строки, мы будем использовать символ каретки (^).
Следующая команда sed удалит все строки, начинающиеся с цифры. Здесь группа символов «[:digit:]» описывает все цифры (0–9).
Мы также можем описать несколько символов для действительного совпадения. В следующем примере будут найдены все строки, начинающиеся с «t» и «b».
В следующем примере показано, как удалить все строки, начинающиеся с символа верхнего регистра. Здесь мы используем группу символов верхнего регистра «[: upper:]».
Если целевые строки содержат символы нижнего регистра в начале, используйте группу символов нижнего регистра «[: lower:]».
Удалить строки, заканчивающиеся определенным символом
Чтобы обозначить конец строки, мы можем использовать символ «$». Он описывает совпадение с последним вхождением шаблона.
В следующем примере sed удалит строки, заканчивающиеся на «e».
Попробуем поискать по нескольким символам.
Удаление строк, соответствующих шаблону, и следующей строки
Мы уже продемонстрировали, как удалить строку, если шаблон совпадает. Мы также можем расширить и удалить следующую строку.
Ознакомьтесь со следующей командой sed.
Sed будет соответствовать строке, содержащей «the», и также удалит следующую строку.
Удаление строки от совпадения с шаблоном до конца
Мы можем расширить предыдущий пример, чтобы приказать sed удалить все строки, начиная с первого совпадения шаблона.
Здесь sed удалит строку, которая соответствует шаблону «первая» и все последующие строки.
Последняя мысль
Sed – простой инструмент. Однако он может творить чудеса благодаря поддержке регулярных выражений. Sed также легко интегрируется в различные скрипты.
Это было всего лишь краткое руководство, демонстрирующее одну из функций sed – удаление строк. С помощью sed вы можете делать множество других вещей.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Основные приёмы обработки строк в bash
Работа со строками в bash осуществляется при помощи встроенных в оболочку команд.
Термины
Сравнение строковых переменных
Для выполнения операций сопоставления 2 строк (str1 и str2) в ОС на основе UNIX применяются операторы сравнения.
Основные операторы сравнения
Пример скрипта для сравнения двух строковых переменных
Создание тестового файла
Обработка строк не является единственной особенностью консольных окружений Ubuntu. В них можно обрабатывать текстовые массивы данных.
Основы работы с grep
Команда grep работает с шаблонами и регулярными выражениями. Кроме того, она применяется с другими командами интерпретатора bash.
Синтаксис команды
Для работы с утилитой grep необходимо придерживаться определенного синтаксиса
Основные опции
Практическое применение grep
Поиск подстроки в строке
В окне терминала выводятся все строки, содержащие подстроку. Найденные совпадения подсвечиваются другим цветом.
Вывод нескольких строк
Чтение строки из файла с использованием регулярных выражений
Регулярные выражения расширяют возможности поиска и позволяют выполнить разбор строки на отдельные элементы. Они активируются при помощи ключа -e.
Чтобы вывести первый символ строки, нужно воспользоваться конструкцией
Если воспользоваться числовыми интервалами, то можно вывести все строки, в которых встречаются числа:
Рекурсивный режим поиска
Точное вхождение
При поиске союза «и» grep будет выводить все строки, в которых он содержится. Чтобы этого избежать, требуется использовать специальный ключ « w »:
Поиск нескольких слов
Утилита «w» позволяет искать не только одно слово, но и несколько одновременно
Количество строк в файле
При помощи grep можно определить число вхождений строки или подстроки в текстовом файле и вывести ее номер.
Инверсия
Если в тексте требуется найти определенные строки, которые не содержат какого-либо слова или подстроки, то рекомендуется использовать инверсионный режим поиска.
Вывод только имени файла
Чтобы не выводить все строки с совпадением, а вывести только имя файла, нужно воспользоваться конструкцией:
Использование sed
Потоковый текстовый редактор « sed » встроен в bash Linux Ubuntu. Он использует построчное чтение, а также позволяет выполнить фильтрацию и преобразование текста.
Синтаксис
Для работы с потоковым текстовым редактором sed используется следующий синтаксис:
sed [options] instructions [file_name] (где «options» — ключи-опции для указания метода обработки текста, «instructions» — команда, совершаемая над найденным фрагментом текста, «file_name» — имя файла, над которым совершаются действия).
Для вывода всех опций потокового текстового редактора нужно воспользоваться командой:
Распространенные конструкции с sed
Замена слова
Например, если требуется заменить строку в файле или слово с «команды» на «инструкции». Для этого нужно воспользоваться следующими конструкциями:
Редактирование файла
Чтобы записать строку в файл, нужно указать параметр замены одной строки на другую, воспользовавшись ключом — -i :
После выполнения команды произойдет замена слова «команды» на «инструкции» с последующим сохранением файла.
Удаление строк из файла
Нумерация строк
Строки в файле будут пронумерованы следующим образом: первая строка — 1, вторая — 2 и т. д.
Следует обратить внимание, что нумерация начинается не с «0», как в языках программирования.
Удаление всех чисел из текста
Замена символов
Чтобы заменить набор символов, нужно воспользоваться инструкцией, содержащей команду « y »:
Обработка указанной строки
Утилита производит манипуляции не только с текстом, но и со строкой, указанной в правиле шаблона (3 строка):
Работа с диапазоном строк
Для выполнения замены только в 3 и 4 строках нужно использовать конструкцию:
Вставка содержимого файла после строки
Иногда требуется вставить содержимое одного файла (input_file.txt) после определенной строки другого (firstfile.txt). Для этой цели используется команда:
sed ‘5r input_file.txt’ firstfile.txt (где «5r» — 5 строка, «input_file.txt» — исходный файл и «firstfile.txt» — файл, в который требуется вставить массив текста).
Начни экономить на хостинге сейчас — 14 дней бесплатно!