[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Ajudinha com o sed usando $variaveis



hamacker escreveu:
Olá pessoal, isso aqui não funciona :
$search_for="# deb http://archive.canonical.com/ubuntu jaunty partner"
$replace_to="deb http://archive.canonical.com/ubuntu jaunty partner"
sed -i  's/"$search_for"/"$replace_to"/g'   /etc/apt/sources.list

Se eu trocar as variaveis por frases literais, aí funciona :
sed -i 's/# deb http:\/\/archive.canonical.com\/ubuntu jaunty
partner/deb http:\/\/archive.canonical.com\/ubuntu jaunty partner/g'
/etc/apt/sources.list

O exemplo acima é apenas um demonstrativo, mas o objetivo é tirar
remarks de linhas especificas de arquivos textos usando o sed.
Onde tá a zica ? porque não consigo embutir variaveis na instrução do sed ?

[]'s



Olá,

Você vai precisar de uma função auxiliar para fazer isso ou digitar antes de cada barra normal uma invertida. Segue duas idéias:

function sed_ready { echo "$1" | sed 's/\//\\\//g'; }
$search_for="`sed_ready "# deb http://archive.canonical.com/ubuntu jaunty partner"`" $replace_to="`sed_ready "deb http://archive.canonical.com/ubuntu jaunty partner"`"
sed -i "s/$search_for/$replace_to/" /etc/apt/sources.list

Ou ainda:

function sed_ready { echo "$1" | sed 's/\//\\\//g'; }
$repository="`sed_ready "http://archive.canonical.com/ubuntu jaunty partner"`"
sed -i "s/# deb $repository/deb $repository/" /etc/apt/sources.list


[]'s
            Junior Polegato


Reply to: