我在文件中有以下内容
$db['db'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
// 'username' => 'user',
'password' => 'removed',
'database' => 'one'
// 'database' => 'two'
);
我需要注释第一个,并取消注释第二个"username"one_answers"database"。我试着用sed替换它们,然后添加,但没有成功。
我需要将以下内容覆盖到原始文件
$db['db'] = array(
'dsn' => '',
'hostname' => 'localhost',
// 'username' => 'root',
'username' => 'user',
'password' => 'removed',
// 'database' => 'one'
'database' => 'two'
);
使用GNU awk作为match()
和";就地";编辑:
$ awk -i inplace '
match($0,/(.*)( 47username 47[[:space:]]*=>.*)/,a) {
$0 = ( sub("//[[:space:]]*","",a[1]) ? a[1] : a[1] "// " ) a[2]
}
1' file
$ cat file
$db['db'] = array(
'dsn' => '',
'hostname' => 'localhost',
// 'username' => 'root',
'username' => 'user',
'password' => 'removed',
'database' => 'db'
);
这里,它是作为一个外壳函数请求:
swap() {
awk -i inplace -v tgt="$1" '
match($0,"(.*)( 47" tgt "