2006-06-14 22:03

by Vasil Kolev

ГАДОВЕ!

(пиша това след като ми се наложи да пиша гнусен workaround)

Google ще ви каже, че ако със sed искате да изтриете празните редове от един файл, се прави със s/^$//d . Да, ама НЕ, ако ползвате GNU sed, който върви с Debian stable, в който тая опция (/d) я няма – нито като да се поддържа, нито се споменава в man-а, и точно това не може да се направи. А аз пък искам да мога да дам един цял script на sed, той да го изпълни, и ако има грешка, да мога да го разбера веднага, не да правя магии през 5 файла и т.н…

Интересното е, че на *BSD тоя проблем го няма,и на sed 4.0.9 на други дистрибуции. ГАДОВЕ.

Tags:

14 Responses to “2006-06-14 22:03”

  1. пейо Says:

    Ами s/^$//d звучи малко глупаво, защото казва: “замени празните редове с нищо и ги изтрий”. Правилното изречение и синтаксиса, който работи е: “ако реда е празен, го изртрий” или казано на sed: /^$/d

  2. Васил Колев Says:

    Проба с това:

    vasil@lyra:~$ sed ‘s/^$/d’ /home/vasil/a
    sed: -e expression #1, char 6: unterminated `s’ command

  3. пейо Says:

    пак си не си пил достатъчно, че да можеш да се докопаш до компютър
    пробвай само с:
    $ sed /^$/d /home/vasil/a

  4. teh Says:

    Става и със grep:

    pn@juniper:~$ cat empty.lines
    my

    empty

    lines

    test
    pn@juniper:~$ grep -v ^$ empty.lines
    my
    empty
    lines
    test
    pn@juniper:~$ grep –version
    grep (GNU grep) 2.5.1

  5. Васил Колев Says:

    Пейо – да, така стана. Все пак ми е чудно защо s/ не може да хваща цял ред…

    Teh – знам, аз сега с grep съм го направил, но сигурно ще ползвам нещото от Пейо в крайна сметка.

  6. DrFrancky Says:

    Снощи проект “Мурджо” взе своите първи жертви. Maniax успя да приложи grep , sed , cat ,
    bash voodoo върху authorized_keys на две машини така че файла стана 0 bytes.
    Моля всички , а и Google в това число , които му предлагат помощ първо да тестват
    на свойте си машини.
    Някакси не е приятно да ти се обадят в 12:30 вечерта с въпроса “Защо не мога да се логна
    на example.com ?” а ти да си на 5-тия Jack Daniel’s с бира.
    Искам да предупредя общественоста : ВНИМАНИЕ !! ПРОЕК МУРДЖО ТРЯБВА ДА БЪДЕ СПРЯН ДОКАТО Е ОЩЕ РАНО !!!

    @teh
    Обади ми се :-)) Днеска цял ден те търся :-))

  7. DrFrancky Says:

    !!! BREAKING NEWS !!!
    Eкипът ни успя да намери снимка на една от жертвите ! Моля тези от вас които са със слаби сърца да не гледат по надолу !

    -rw-r–r– 1 root root 0 2006-06-14 11:59 authorized_keys

  8. Тъпан Says:

    Аз познавам Мурджо!
    Тъпан

  9. velin Says:

    sed, та sed. манияксе, манияксее.. tr до дупка брато

  10. ицаци Says:

    Не се научи значи…

    import sys; sys.stdout.write('\n'.join([l for l in map(lambda x: x.strip(), sys.stdin.readlines()) if len(l)])+'\n')

  11. Atanas Bachvaroff Says:

    Маняхсе, Маняхсе. ?

  12. Atanas Bachvaroff Says:

    oops…
    Маняхсе, Маняхсе. Не се ли научи, че магиите са само за вещите в занаята (вещери)?

  13. denikide Says:

    А туй опита ли го sed ‘/^$/d’

  14. denikide Says:

    Бах заспал съм вече го има това ;-)

Leave a Reply