sed удалить первое вхождение строки, Алёша Головин, 15-Авг-24, 12:49 [смотреть все]Здравствуйте подскажите пожалуйста по sed мануал курил, но похожего не нашелНужно удалять каждую первую строку, начинающююся на "#", если подряд идут две или более строк начинающихся на "#". дано: cat test.txt #text1 text2 #text3 #text4 нужно: #text1 text2 #text4 Я сделал на питоне, но приходится тащить его отдельно, что нехорошо. Думается с помощью sed это будет проще и быстрее, если конечно знать как. Спасибо
|
- sed удалить первое вхождение строки, Аноним, 19:15 , 15-Авг-24 (1)
зачем sed, когда ты его будешь вызывать из баш, а на баше такое реализуется без стартования дочерних процессов, по человечески, понадобится только обычный советский... [читать далее >>]...цикл по строкам.
- sed удалить первое вхождение строки, Pahanivo, 18:19 , 16-Авг-24 (2)
На sed можно оперировать по многостроку, через буфера. Но там синтаксис наркомания чистой воды. ИМХО вообще тут самое место perl regex. - sed удалить первое вхождение строки, Аноним, 03:54 , 17-Авг-24 (3) +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
- sed удалить первое вхождение строки, Pahanivo пробегал, 23:12 , 22-Авг-24 (4)
> 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 таблетки не такие жоссские .... можно понять
|