- Как удалить строку содержащую определенное значение linux
- Номер строки
- Примеры
- Ещё пример
- Удаление строки по контексту
- Удаление строки или нескольких строк в файле
- Объединение строк
- Объединение двух соседних строк попарно
- 😡 Как удалить строки, соответствующие определенному шаблону в файле, используя SED
- Удалить строки, соответствующие определенному шаблону в файле, используя SED
- Удаление строк из файла с использованием sed
- Sed: удалить одну или несколько строк из файла
- Синтаксис
- Примеры Sed
- Команда Sed для удаления строки
- Sed в Linux
- Удаление строки с помощью sed
- Удалить одну строку
- Удалить диапазон строки
- Удалить несколько строк
- Удалить все строки, кроме указанного диапазона
- Удалить пустые строки
- Удалить линии по шаблону
- Удалить строки, начинающиеся с определенного символа
- Удалить строки, заканчивающиеся определенным символом
- Удаление строк, соответствующих шаблону, и следующей строки
- Удаление строки от совпадения с шаблоном до конца
- Последняя мысль
- Удалить строки из файла содержащие
Как удалить строку содержащую определенное значение linux
Содержимое sec.csv выглядит примерно так:
фактически, это время в минутах и секундах или просто в секундах. Привести его к виду hh:mm:ss можно командой:
после чего данные выглядят так:
Отрицание указывается знаком » ! » в конце конструкции » /:/! «
Номер строки
Примеры
UNIX | SED |
---|---|
cat | sed ‘:’ |
cat -s | sed ‘1s / ^ $ / / p; / . / , / ^ $ / !d’ |
tac | sed ‘1!G;h;$!d’ |
grep | sed ‘/ patt / !d’ |
grep -v | sed ‘/ patt / d’ |
head | sed ’10q’ |
head -1 | sed ‘q’ |
tail | sed -e ‘:a’ -e ‘$q;N;11,$D;ba’ |
tail -1 | sed ‘$!d’ |
tail -f | sed -u ‘/ . / !d’ |
cut -c 10 | sed ‘s / \(.\)\<10\>.* / \1 / ‘ |
cut -d: -f4 | sed ‘s / \(\([ ^ :]*\):\)\<4\>.* / \2 / ‘ |
tr A-Z a-z | sed ‘y / ABCDEFGHIJKLMNOPQRSTUVWXYZ / abcdefghijklmnopqrstuvwxyz / ‘ |
tr a-z A-Z | sed ‘y / abcdefghijklmnopqrstuvwxyz / ABCDEFGHIJKLMNOPQRSTUVWXYZ / ‘ |
tr -s ‘ ‘ | sed ‘s / \+ / / g’ |
tr -d ‘\012’ | sed ‘H;$!d;g;s / \n / / g’ |
wc -l | sed -n ‘$=’ |
uniq | sed ‘N; / ^ \(.*\)\n\1$ / !P;D’ |
rev | sed ‘/ \n / !G;s / \(.\)\(.*\n\) / &\2\1 / ; / / D;s / . / / ‘ |
basename | sed ‘s,.* / ,,’ |
dirname | sed ‘s,[ ^ / ]*$,,’ |
xargs | sed -e ‘:a’ -e ‘$!N;s / \n / / ;ta’ |
paste -sd: | sed -e ‘:a’ -e ‘$!N;s / \n / : / ;ta’ |
cat -n | sed ‘=’ | sed ‘$!N;s / \n / / ‘ |
grep -n | sed -n ‘/ patt / <=;p;>‘ | sed ‘$!N;s / \n / : / ‘ |
cp orig new | sed ‘w new’ orig |
hostname -s | hostname | sed ‘s / \..* / / ‘ |
Ещё пример
Эта строка проходит в цикле по всем файлам в текущем каталоге, имена которых оканчиваются на .txt, и:
Для чего это? Вот для чего. Я разбил длинный dokuwiki-файл с командами линукс на мелкие файлы. Они получились вида:
Данная последовательность команд превратила их все в вид:
Удаление строки по контексту
Для удаления строки, содержащей определённый контекст, можно использовать следующую конструкцию:
Эта команда в файле notes.ini удаляет все строки, начинающиеся с AUTO_SAVE .
Удаление строки или нескольких строк в файле
Для удаления строки или нескольких строк в файле я использую следующую конструкцию:
Эта команда в файле удаляет вторую строку.
Эта команда в файле удалит десять строк начиная с пятой (включая пятую).
Объединение строк
Этот пример показывает, как можно объединить строки, разделённые возвратом каретки:
Объединение двух соседних строк попарно
Объединить попарно две строки, разделённые возвратом каретки:
Источник
😡 Как удалить строки, соответствующие определенному шаблону в файле, используя SED
В этом руководстве мы узнаем, как удалять строки, соответствующие определенному шаблону в файле, используя SED.
SED – это потоковый редактор, который выполняет базовую фильтрацию текста и преобразования входного потока (файла или ввода из конвейера).
Удалить строки, соответствующие определенному шаблону в файле, используя SED
В нашем предыдущем руководстве мы рассмотрели, как удалять сктроки, соответствующие определенным шаблонам в VIM.
Вы можете проверить этот метод, перейдя по ссылке ниже;
Теперь давайте рассмотрим различные примеры удаления строк, соответствующих определенному шаблону, в файле с помощью SED.
Для демонстрации мы будем использовать семь цветов радуги в файле.
Как и в VIM, мы будем использовать команду d для удаления определенного пространства шаблонов с помощью SED.
Для начала, если вы хотите удалить строку, содержащую ключевое слово, вы должны запустить sed, как показано ниже.
Где опция -i указывает место в файл.
Если вам нужно выполнить пробный прогон (без фактического удаления строки с ключевым словом) и вывести результат в стандартный вывод, опустите опцию -i.
Например, удалите строку, содержащую ключевое слово green, которую вы запустите;
Точно так же вы можете запустить команду sed с опцией -n и командой p, (!p).
Удалить строки, содержащие несколько ключевых слов, например, удалить строки с ключевым словом green или строки с ключевым словом violet.
Если вам нужно удалить строки, но создать резервную копию исходного файла, используйте параметр -i в формате -i.bak.
Это создаст файл .bak оригинального имени файла.
Удалить все строки, кроме тех, которые содержат определенный шаблон или ключевое слово;
Чтобы удалить строки, начинающиеся с определенного символа или шаблона, например, строки комментариев, начинающиеся с # или строки, начинающиеся с ключевого слова amos.
Удалить строки, заканчивающиеся определенным шаблоном или символом, например, удалить строки, начинающиеся с символа o или ключевого слова amos;
Чтобы объединить вышеперечисленное, вы можете удалить строки, заканчивающиеся буквой o или ключевым словом amos;
Удалить пустые строки
Удалить пустые строки или строки, содержащие один или несколько пробелов;
Удалить пустые строки или строки, которые на одной или нескольких вкладках;
Что ж, это лишь малая часть того, что мы могли бы рассказать о том, как удалять строки, соответствующие определенному шаблону в файле, используя SED.
Не стесняйтесь добавлять больше примеров и предложений в комментариях ниже.
Источник
Удаление строк из файла с использованием sed
В Unix команда SED удаляет одну или несколько строк из указанного файла по желанию пользователя. Эта утилита используется для работы с командной строкой Unix, для удаления из файла выражений, которые могут быть идентифицированы с помощью определяющего разделителя (например, запятая, табуляция или пробел), по номеру строки или путем поиска строки, выражения или адреса строки в синтаксисе sed.
Sed: удалить одну или несколько строк из файла
Вот как можно удалить одну или несколько строк из файла.
Синтаксис
n = номер строки
string = ряд символов, найденный в строке
regex = регулярное выражение, соответствующее искомому шаблону
addr = адрес строки (номер или шаблон)
d = удалить (delete)
Примеры Sed
Вот несколько примеров использования приведенного выше синтаксиса.
Используйте следующий код, чтобы удалить третью строку:
Удалите строку, содержащую ряд букв «awk», используя:
Вы можете удалить последнюю строку, введя:
Или удалить все пустые строки:
Удалить строку, соответствующую регулярным выражениям (путем исключения одного из них, содержащего цифровые символы, как минимум 1 цифру, расположенные в конце строки):
Удалить интервал между строками 7 и 9:
Та же операция, что и приведенная выше, но с заменой адреса параметрами:
Вышеприведенные примеры отображают изменения только при открытии файла (stdout1 = screen).
Для постоянных изменений в старых версиях (ниже 4) используйте временный файл для GNU sed с использованием команды -i [suffix]:
Источник
Команда 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.
Источник
Удалить строки из файла содержащие
Подскажите, как удалить строки из файла в которых содержится /-1.markline
Еще желательно что бы после удаления не оставалось пустых строк на том месте где была удаленная строка
Не то, не работает
Тоесть, тебе самому даже мысль в голову не пришла заэуранировать символ / ?
Есть ли смысл вообще давать подсказки такой публике ?
Если бы я знал как сделать не спрашивал бы.
Тут нужна точность, в файле много похожих строк например -1.markline и символ / как раз уточняет нужные строки и потом я уже много вариантов перепробовал, со вчерашнего дня, и уже чувствую что туплю, нужно пойти попить кофе, и со свежими мыслями взяться за дело
Последнее что я делал составил список номеров строк которые нужно удалить, и тут sed отказался даже по номерам строк удалять
Пробовал так sed —silent -e ‘5125d;12889d;15365d;64682d;96833d’ filename
Если не хочешь читать man по sed, открой файл текстовым редактором и меняй там.
Вы бы хоть привели пример файла, буквально пять-шесть строк с нужными вхождениями и без них. Самому проектировать ситуацию, кому это надо?
Похоже сами не знаете, что может быть проще, есть шаблон это /-1.abc все строки в которых есть такое значение должны быть удалены
Если так 1.abc то легко сделать
Но дело в том что в файле много строк нужных в которых используется 1.abc пострадают и они
А символы / — часто используются в регулярках, вот поэтому нужно как то особенно об’яснять sed`у что нужно делать
Мдя, если честно, то вы производите впечатление ленивого человека. Да еще наехали на анонимуса за его дельный совет. А что может быть проще скопировать часть ваших данных, буквально несколько строчек (которые нужно удалить и которые не должны быть удалены), вставить их сюда и люди бы уже так и быть сделали за вас вашу работу. Но вы же даже этого не хотите сделать. Или вы просто не поняли о чем он вам сказал?
Источник