我在文件中有以下内容
$db['db'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
// 'username' => 'user',
'password' => 'removed',
'database' => 'one'
// 'database' => 'two'
);
Run Code Online (Sandbox Code Playgroud)
我需要注释第一个并取消注释第二个“用户名”和“数据库”。我试图通过替换然后添加没有成功来将它们与 sed 交换。
我需要将以下内容覆盖到原始文件中
$db['db'] = array(
'dsn' => '',
'hostname' => 'localhost',
// 'username' => 'root',
'username' => 'user',
'password' => 'removed',
// 'database' => 'one'
'database' => 'two'
);
Run Code Online (Sandbox Code Playgroud)
将 GNU awk 用于第三个 arg tomatch()和“就地”编辑:
$ awk -i inplace '
match($0,/(.*)(\047username\047[[:space:]]*=>.*)/,a) {
$0 = ( sub("//[[:space:]]*","",a[1]) ? a[1] : a[1] "// " ) a[2]
}
1' file
Run Code Online (Sandbox Code Playgroud)
$ cat file
$db['db'] = array(
'dsn' => '',
'hostname' => 'localhost',
// 'username' => 'root',
'username' => 'user',
'password' => 'removed',
'database' => 'db'
);
Run Code Online (Sandbox Code Playgroud)
这是作为请求的shell函数:
swap() {
awk -i inplace -v tgt="$1" '
match($0,"(.*)(\047" tgt "\047[[:space:]]*=>.*)",a) {
$0 = ( sub("//[[:space:]]*","",a[1]) ? a[1] : a[1] "// " ) a[2]
}
1' "$2"
}
Run Code Online (Sandbox Code Playgroud)
$ swap username file
Run Code Online (Sandbox Code Playgroud)
$ cat file
$db['db'] = array(
'dsn' => '',
'hostname' => 'localhost',
// 'username' => 'root',
'username' => 'user',
'password' => 'removed',
'database' => 'db'
// 'database' => 'db'
);
Run Code Online (Sandbox Code Playgroud)
$ swap database file
Run Code Online (Sandbox Code Playgroud)
$ cat file
$db['db'] = array(
'dsn' => '',
'hostname' => 'localhost',
// 'username' => 'root',
'username' => 'user',
'password' => 'removed',
// 'database' => 'db'
'database' => 'db'
);
Run Code Online (Sandbox Code Playgroud)