你可以使用 psql
命令结合 grep
和 awk
或者 cut
来过滤出执行结果是 f
还是 t
。下面是一个示例命令,展示了如何做到这一点:
psql -U vastbase -h localhost -W "Vbase@1234" -c "SELECT pg_is_in_recovery();" | grep -E '^[ tf]' | awk '{print $1}'
解释
psql -U vastbase -h localhost -W “Vbase@1234” -c “SELECT pg_is_in_recovery();”:执行 SQL 查询,返回结果。
grep -E ‘^[ tf]’:从查询结果中过滤掉不需要的行,只保留以空格或
t
/f
开头的行。awk ‘{print $1}’:输出过滤后的第一列,即
t
或f
。
可选的替代方法
你也可以使用更简单的方法,例如直接使用以下命令来仅提取第一列的内容:
psql -U vastbase -h localhost -W "Vbase@1234" -c "SELECT pg_is_in_recovery();" | grep '^[ tf]' | cut -d' ' -f1
这会给你同样的结果,只是用 cut
来代替了 awk
。
注意事项
- 确保在执行这些命令时,你有权限访问 PostgreSQL 数据库,并且输入的密码正确。
- 如果希望将密码隐藏而不在命令中直接显示,可以考虑设置环境变量或者使用
.pgpass
文件来管理连接信息。
内容由零声教学AI助手提供,问题来源于学员提问