sed, regex substitui por vars

2

Estou tentando usar o sed (4.2.2-4 + b1 debian 8 (jessie)) para substituir o texto em vários arquivos.

Para sair disso:

$var1 = array(foo=>"bar",bar=>"foo");
$var2 = array( foo=>"bar", bar=>"foo" );
$var1 = array(
    foo=>"bar",
    bar=>"foo"
);

Para obter isso:

$var1 = array( "foo" => "bar","bar" => "foo");
$var2 = array( "foo" => "bar", "bar" => "foo" );
$var1 = array(
    "foo" => "bar",
    "bar" => "foo"
);

O regex normal seria:

/(\(|\(\s|,|,\s.+?)([a-z|A-Z].+?)=>/$1"$2" => /g

Usar o sed parece que isso não está funcionando embora

sed -i "s#\((\|(\s\|,\|,\s.+?\)\([a-zA-z].+?\)=>#\"\" => #g" *.php

Ou:

sed -i "s#\((\|(\s\|,\|,\s.+?\)\([a-z\|A-z].+?\)=>#\"\" => #g" *.php

Alguém sabe o que estou fazendo errado?

    
por Chris 22.01.2016 / 12:18

1 resposta

1
sed -r 's/([^"])([[:alpha:]_][[:alnum:]_]*)[[:blank:]]*=>/"" => /g'

encontre um caractere que não seja de aspas, seguido pela chave de hash, seguido pelo espaço em branco opcional seguido por => e insira aspas ao redor da chave.

    
por 22.01.2016 / 15:17

Tags