用于 postgresql pg_hba.conf 修改的 sed 命令
sed command for postgresql pg_hba.conf modification
我想使用 sed 编辑 pg_hba.conf 的内容:
# "local" is for Unix domain socket connections only
local all all peer
到
# "local" is for Unix domain socket connections only
local all all trust
为了知道,我使用了这个有效的命令:
sed -i 's/local all all peer/local all all trust/' pg_hba.conf
但我正在寻找绕过所有这些空间的方法
您可以使用
sed -E -i 's/local([[:space:]]+)all([[:space:]]+)all([[:space:]]+)peer/localallalltrust/' test.conf
或者,因为您似乎拥有 GNU sed
:
sed -E -i 's/local(\s+)all(\s+)all(\s+)peer/localallalltrust/' test.conf
当然你可以在评论中做 并将其减少到
sed -E -i 's/(local\s+all\s+all\s+)peer/trust/' test.conf
注:
-E
启用 POSIX ERE 语法(无需转义 +
和 (...)
)
([[:space:]]+)
/ (\s+)
定义ID以1开头匹配一个或多个空格的捕获组
</code>、<code>
和 </code> 是占位符,是对适当组值的反向引用。</li>
</ul>
<p>在<code>s/(local\s+all\s+all\s+)peer/trust/
中,你捕获了peer
之前的整个部分并匹配peer
,然后整个匹配被替换为peer
之前的部分(用</code>) + <code>trust
.
如果需要更改的字符串并不总是 peer
,您可以使用此 sed
$ sed -i 's/\S*$/trust/' input_file
# local is for Unix domain socket connections trust
local all all trust
我想使用 sed 编辑 pg_hba.conf 的内容:
# "local" is for Unix domain socket connections only
local all all peer
到
# "local" is for Unix domain socket connections only
local all all trust
为了知道,我使用了这个有效的命令:
sed -i 's/local all all peer/local all all trust/' pg_hba.conf
但我正在寻找绕过所有这些空间的方法
您可以使用
sed -E -i 's/local([[:space:]]+)all([[:space:]]+)all([[:space:]]+)peer/localallalltrust/' test.conf
或者,因为您似乎拥有 GNU sed
:
sed -E -i 's/local(\s+)all(\s+)all(\s+)peer/localallalltrust/' test.conf
当然你可以在评论中做
sed -E -i 's/(local\s+all\s+all\s+)peer/trust/' test.conf
注:
-E
启用 POSIX ERE 语法(无需转义+
和(...)
)([[:space:]]+)
/(\s+)
定义ID以1开头匹配一个或多个空格的捕获组</code>、<code>
和</code> 是占位符,是对适当组值的反向引用。</li> </ul> <p>在<code>s/(local\s+all\s+all\s+)peer/trust/
中,你捕获了peer
之前的整个部分并匹配peer
,然后整个匹配被替换为peer
之前的部分(用</code>) + <code>trust
.
如果需要更改的字符串并不总是 peer
sed
$ sed -i 's/\S*$/trust/' input_file
# local is for Unix domain socket connections trust
local all all trust