удалить строку по номеру 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 для удаления строки

удалить строку по номеру bash. Смотреть фото удалить строку по номеру bash. Смотреть картинку удалить строку по номеру bash. Картинка про удалить строку по номеру bash. Фото удалить строку по номеру bash

Эта статья продемонстрирует, как использовать 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 применяются операторы сравнения.

Основные операторы сравнения

Пример скрипта для сравнения двух строковых переменных

удалить строку по номеру bash. Смотреть фото удалить строку по номеру bash. Смотреть картинку удалить строку по номеру bash. Картинка про удалить строку по номеру bash. Фото удалить строку по номеру bash

Создание тестового файла

Обработка строк не является единственной особенностью консольных окружений Ubuntu. В них можно обрабатывать текстовые массивы данных.

Основы работы с grep

Команда grep работает с шаблонами и регулярными выражениями. Кроме того, она применяется с другими командами интерпретатора bash.

Синтаксис команды

Для работы с утилитой grep необходимо придерживаться определенного синтаксиса

удалить строку по номеру bash. Смотреть фото удалить строку по номеру bash. Смотреть картинку удалить строку по номеру bash. Картинка про удалить строку по номеру bash. Фото удалить строку по номеру bash

Основные опции

Практическое применение grep

Поиск подстроки в строке

удалить строку по номеру bash. Смотреть фото удалить строку по номеру bash. Смотреть картинку удалить строку по номеру bash. Картинка про удалить строку по номеру bash. Фото удалить строку по номеру bash

В окне терминала выводятся все строки, содержащие подстроку. Найденные совпадения подсвечиваются другим цветом.

Вывод нескольких строк

Чтение строки из файла с использованием регулярных выражений

Регулярные выражения расширяют возможности поиска и позволяют выполнить разбор строки на отдельные элементы. Они активируются при помощи ключа -e.

Чтобы вывести первый символ строки, нужно воспользоваться конструкцией

Если воспользоваться числовыми интервалами, то можно вывести все строки, в которых встречаются числа:

Рекурсивный режим поиска

Точное вхождение

При поиске союза «и» grep будет выводить все строки, в которых он содержится. Чтобы этого избежать, требуется использовать специальный ключ « w »:

Поиск нескольких слов

Утилита «w» позволяет искать не только одно слово, но и несколько одновременно

Количество строк в файле

При помощи grep можно определить число вхождений строки или подстроки в текстовом файле и вывести ее номер.

удалить строку по номеру bash. Смотреть фото удалить строку по номеру bash. Смотреть картинку удалить строку по номеру bash. Картинка про удалить строку по номеру bash. Фото удалить строку по номеру bash

Инверсия

Если в тексте требуется найти определенные строки, которые не содержат какого-либо слова или подстроки, то рекомендуется использовать инверсионный режим поиска.

Вывод только имени файла

Чтобы не выводить все строки с совпадением, а вывести только имя файла, нужно воспользоваться конструкцией:

Использование sed

Потоковый текстовый редактор « sed » встроен в bash Linux Ubuntu. Он использует построчное чтение, а также позволяет выполнить фильтрацию и преобразование текста.

Синтаксис

Для работы с потоковым текстовым редактором sed используется следующий синтаксис:

sed [options] instructions [file_name] (где «options» — ключи-опции для указания метода обработки текста, «instructions» — команда, совершаемая над найденным фрагментом текста, «file_name» — имя файла, над которым совершаются действия).

удалить строку по номеру bash. Смотреть фото удалить строку по номеру bash. Смотреть картинку удалить строку по номеру bash. Картинка про удалить строку по номеру bash. Фото удалить строку по номеру bash

Для вывода всех опций потокового текстового редактора нужно воспользоваться командой:

Распространенные конструкции с sed

Замена слова

Например, если требуется заменить строку в файле или слово с «команды» на «инструкции». Для этого нужно воспользоваться следующими конструкциями:

Редактирование файла

Чтобы записать строку в файл, нужно указать параметр замены одной строки на другую, воспользовавшись ключом — -i :

После выполнения команды произойдет замена слова «команды» на «инструкции» с последующим сохранением файла.

Удаление строк из файла

Нумерация строк

Строки в файле будут пронумерованы следующим образом: первая строка — 1, вторая — 2 и т. д.

удалить строку по номеру bash. Смотреть фото удалить строку по номеру bash. Смотреть картинку удалить строку по номеру bash. Картинка про удалить строку по номеру bash. Фото удалить строку по номеру bash

Следует обратить внимание, что нумерация начинается не с «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 дней бесплатно!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *