我正在尝试使用 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'
找到一个非引号字符,后跟井号键,后跟可选的空格,后跟=>
,然后在键周围插入引号。