замена нескольких регулярных выражений для переменной в bash?

Я хотел бы знать, есть ли способ сделать несколько замен регулярных выражений в bash с помощью $ {string // substring / replace} или, возможно, какое лучшее решение существует.

У меня есть сценарий для отправки обновлений в statusnet и friendika с помощью curl. Я подписываю петиции, например, в Интернете, и мне предлагают опубликовать их в Твиттере, но я предпочитаю отправить их на identityica. Я устал вставлять что-то и редактировать в терминале, чтобы избежать @ и #,! а также ?. Я бы хотел заменить их в моем скрипте регулярным выражением, чтобы автоматически изменить

@repbunghole and @SenatorArsehat Stop farking around with #someship! Do you want me to come smack you? | http://someshort.url

на

\@repbunghole \@SenatorArsehat Stop farking around with \#someship\! Do you want me to come smack you\? \| http://someshort.url

. У меня нет сильного sed или awk fu, но представьте, что они могут предложить решения, и я не знаю как использовать sed без записи переменной в файл, чтения файла и действий с ним, а затем установки переменной var = $ (cat file). Да. Я новичок в этом вопросе. Я не нахожу достаточных данных в приведенной выше строке $ {string // substring / replace /} для множественных замен. Выполнение этого X раз, чтобы избежать X разных символов, кажется неэффективным.

например

read -p "Enter a string: " a
b=${a//\@/\\\@}
c=${b//\#/\\\#}
d=${c//\!/\\\!}
e=${d//\?/\\\?}
f=${e//\"/\\\"}
g=${f//\'/\\\'}

и т. Д. И т. Д. пока работает, но некрасиво ...

6
задан tonybaldwin 28 September 2011 в 15:24
поделиться