我期待删除所有来自行绘制字符:psql非选择:如何删除格式并只显示某些列?
PGPASSWORD="..." psql -d postgres -h "1.2.3.4" -p 9432 -c 'show pool_nodes' -U owner
node_id | hostname | port | status | lb_weight | role
---------+---------------+------+--------+-----------+---------
0 | 10.20.30.40 | 5432 | 2 | 0.500000 | primary
1 | 10.20.30.41 | 5432 | 2 | 0.500000 | standby
(2 rows)
添加-t
选项摆脱了页眉和页脚,但竖条仍然存在:
PGPASSWORD="..." psql -t -d postgres -h "1.2.3.4" -p 9432 -c 'show pool_nodes' -U owner
0 | 10.20.30.40 | 5432 | 2 | 0.500000 | primary
1 | 10.20.30.41 | 5432 | 2 | 0.500000 | standby
注意此问题特定于show pool_nodes
和其他类似的非select
SQL语句。
我现在的解决方法是涉及Linux的cut
命令:
<previous command> | cut -d '|' -f 4
的问题有两个部分:
- 如何使用
psql
只能竖条上述被删除? - 如何使用
psql
只能显示特定列(例如status
)或列?例如,结果可能只是两行,每行显示数字2
。
我在CentOS 7服务器上使用psql版本psql (PostgreSQL) 9.2.18
。
使用'-qAtX'还包括垂直输出删除所有间距的酒吧。不幸的是,这并没有回答这个问题,我的OP已经显示了'cut'解决方法(注意:你的-f和-c选项的使用是不正确的)。但是,谢谢你的尝试! –
呃,脑f重新切割。那么你打算实现什么?你的问题有点含糊,因为简单地“移除竖条”(管道)不是很有效,而且你不知道你试图达到的底层目标是什么。 *输出列的宽度不固定,取决于输出数据*所以按char-column范围切割不能可靠工作。如果您只想更改分隔符,请参阅手册页 - 例如“-F”。但请注意,这不会产生CSV - 任何','在数据结果中*都不会被转义*。 –
详细说明。也许你应该解释你的实际潜在目标是什么? –