Здравствуйте подскажите пожалуйста по sed
мануал курил, но похожего не нашелНужно удалять каждую первую строку, начинающююся на "#", если подряд идут две или более строк начинающихся на "#".
дано:
cat test.txt
#text1
text2
#text3
#text4нужно:
#text1
text2
#text4Я сделал на питоне, но приходится тащить его отдельно, что нехорошо. Думается с помощью sed это будет проще и быстрее, если конечно знать как.
Спасибо
зачем sed, когда ты его будешь вызывать из баш, а на баше такое реализуется без стартования дочерних процессов, по человечески, понадобится только обычный советский... [читать далее >>]...цикл по строкам.
На sed можно оперировать по многостроку, через буфера. Но там синтаксис наркомания чистой воды.
ИМХО вообще тут самое место perl regex.
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
> 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 таблетки не такие жоссские .... можно понять