The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"sed удалить первое вхождение строки"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на рабочей станции (Разное / Linux)
Изначальное сообщение [ Отслеживать ]

"sed удалить первое вхождение строки"  +/
Сообщение от Алёша Головин (?), 15-Авг-24, 12:49 
Здравствуйте подскажите пожалуйста по sed
мануал курил, но похожего не нашел

Нужно удалять каждую первую строку, начинающююся на "#", если подряд идут две или более строк начинающихся на "#".

дано:
cat test.txt
#text1
text2
#text3
#text4

нужно:

#text1
text2
#text4

Я сделал на питоне, но приходится тащить его отдельно, что нехорошо. Думается с помощью sed это будет проще и быстрее, если конечно знать как.
Спасибо

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 15-Авг-24, 19:15   +/
зачем sed, когда ты его будешь вызывать из баш, а на баше такое реализуется без стартования дочерних процессов, по человечески, понадобится только обычный советский... [читать далее >>]

...цикл по строкам.

Ответить | Правка | Наверх | Cообщить модератору

2. Сообщение от Pahanivo (ok), 16-Авг-24, 18:19   +/
На sed можно оперировать по многостроку, через буфера. Но там синтаксис наркомания чистой воды.
ИМХО вообще тут самое место perl regex.

Ответить | Правка | Наверх | Cообщить модератору

3. Сообщение от Аноним (3), 17-Авг-24, 03:54   +1 +/
awk 'BEGIN {ORS=""}; {prev=str; str=$0; str ~ /^#/ ? has=1:has=0; prev ~ /^#/ ? had=1:had=0; if (had && has && !del) del=1; else {print prev; ORS="\n"}; if (!has) del=0}; END {if (del || !had || !has) print str}'  test.txt
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #4

4. Сообщение от Pahanivo пробегал (?), 22-Авг-24, 23:12   +/
>  awk 'BEGIN {ORS=""}; {prev=str; str=$0; str ~ /^#/ ? has=1:has=0; prev
> ~ /^#/ ? had=1:had=0; if (had && has && !del) del=1;
> else {print prev; ORS="\n"}; if (!has) del=0}; END {if (del ||
> !had || !has) print str}'  test.txt

но вот тут по сравнению с sed таблетки не такие жоссские .... можно понять

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру