sed,正则表达式替换为 vars

sed,正则表达式替换为 vars

我正在尝试使用 sed (4.2.2-4+b1 debian 8 (jessie)) 替换多个文件中的文本。

从此开始:

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

要获得这个:

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

正常的正则表达式是:

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

不过,这样使用 sed 似乎不起作用

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

或者:

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

有谁知道我做错了什么?

答案1

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

找到一个非引号字符,后跟井号键,后跟可选的空格,后跟=>,然后在键周围插入引号。

相关内容