better multiple replace com chaves

0

para um único substituir o chaveiro funciona bem
mas eu não consigo encontrar uma solução para vários substituir onde está o truque?
ou não é possível para vários substituir eu uso sed e para o método single the chats

#example vars
addons="WEBIF_LIVELOG WEBIF_JQUERY TOUCH WITH_SSL READ_SDT_CHARSETS WITH_DEBUG MODULE_MONITOR"
protocols="MODULE_hans MODULE_paul MODULE_klaus MODULE_franz"
readers="READER_foo READER_bar READER_foobar READER_barfoo"
card_readers="CARDREADER_type1 CARDREADER_type2 CARDREADER_type3"

_create_module_arrays(){
i=0;
for e in $(echo "$addons" | sed 's/WEBIF_//g;s/WITH_//g;s/MODULE_//g;s/HAVE_//g;s/_CHARSETS//g;);
do
<------>SHORT_ADDONS+=($e);
<------>SHORT_MODULENAMES+=($e);
done;
for e in ${protocols//MODULE_/};
do
<------>SHORT_PROTOCOLS+=($e);
<------>SHORT_MODULENAMES+=($e);
done;
for e in ${readers//READER_/};
do
<------>SHORT_READERS+=($e);
<------>SHORT_MODULENAMES+=($e);
done;
for e in ${card_readers//CARDREADER_/};
do
<------>SHORT_CARD_READERS+=($e);
<------>SHORT_MODULENAMES+=($e);
done;
for e in $addons $protocols $readers $card_readers;
do
<------>ALL_MODULES_LONG+=($e);
done;
for e in "${SHORT_MODULENAMES[@]}";
do
<------>INTERNAL_MODULES["$e"]="${ALL_MODULES_LONG[i]}";((i++));
done;
};
    
por Gorgone Impertinence 29.05.2016 / 16:36

1 resposta

2

No bash, se você quiser excluir esses padrões, pode usar a correspondência estendida de padrões:

# optional - save extglob state
$ shopt -q extglob && extglob_disabled=false || extglob_disabled=true

# enable extended pattern matching
$ shopt -s extglob

$ addons="WEBIF_LIVELOG WEBIF_JQUERY TOUCH WITH_SSL READ_SDT_CHARSETS WITH_DEBUG MODULE_MONITOR"
$ echo ${addons//@(WEBIF_|WITH_|MODULE_|HAVE_|_CHARSETS)}
LIVELOG JQUERY TOUCH SSL READ_SDT DEBUG MONITOR

# optional - restore extglob state
$ $extglob_disabled && shopt -u extglob
    
por 29.05.2016 / 20:42