Ответы пользователя по тегу sed
  • Как с помощью sed в bash конвертировать className из camelCase в dash?

    erge
    @erge
    Примус починяю
    например как-то так:
    sed -r '
    s/(className="[^"]+)([A-Z])([^"]+)([A-Z])([^"]+)([A-Z])([^"]+")/\1-\L\2\3-\L\4\5-\L\6\7/g;
    s/(className="[^"]+)([A-Z])([^"]+)([A-Z])([^"]+")/\1-\L\2\3-\L\4\5/g;
    s/(className="[^"]+)([A-Z])([^"]+")/\1-\L\2\3/g
    ' input_file > output_file


    или вот так, во всех файлах по маске:
    sed -i -r '
    s/(className="[^"]+)([A-Z])([^"]+)([A-Z])([^"]+)([A-Z])([^"]+")/\1-\L\2\3-\L\4\5-\L\6\7/g;
    s/(className="[^"]+)([A-Z])([^"]+)([A-Z])([^"]+")/\1-\L\2\3-\L\4\5/g;
    s/(className="[^"]+)([A-Z])([^"]+")/\1-\L\2\3/g
    ' *.jsx

    см. пример
    PS:
    ключ -i[SUFFIX], --in-place[=SUFFIX]
    edit files in place (makes backup if SUFFIX supplied)
    Ответ написан
    2 комментария
  • Удалить символы переноса строки?

    erge
    @erge
    Примус починяю
    sed -r ':a;N;$!ba;s/([^;][^\?])[\r\n]+/\1/g' source_file > target_file


    см. пример на sed.js.org

    пример на regex101, в разделе Explanation - разъяснение шаблона

    PS: если в строке меньше 2 символов, то шаблон не сработает, далее сами развивайте
    Ответ написан
    Комментировать
  • Как в sed сделать несколько последовательных замен?

    erge
    @erge Автор вопроса
    Примус починяю
    в принципе разобрался...

    после команд
    :a;N;$!ba
    весь текст становится одной строкой, поэтому немного по другому надо регулярки, см. ниже:
    sed '/title/d
         :a;N;$!ba
         s/ \{2,\}//g
         s#\s*</td>\s*</tr>\s*<tr>\s*<td>\s*#\n#g
         s#\s*</td>\s*<td>\s*#;#g
         s/<[^>]\+>//g
         s/\n\{2,\}//g' /dev/shm/ex01.html


    UPDATE

    конечный вариант в итоге такой:
    ### Convert HTML to CSV
    sed ':a;N;$!ba
         s/<html.\+<table[^>]\+>//Ig
         s#\s*</td>\s*</tr>\s*<tr>\s*<td>\s*#\n#Ig
         s#\s*</td>\s*<td>\s*#;#Ig
         s/<[^>]\+>//g;s/\s\{2,\}//g' somreport.html


    пример здесь
    Ответ написан
    Комментировать