我正在运行一个
psql
查询,如下所示:
$ psql --file=foo.sql "BAR-DB"
其中
foo.sql
包含查询。 foo.sql
的语法很糟糕,因此输出是错误消息列表。我的计划是将输出通过管道传输到 grep
,以便我可以过滤特定的错误消息,但是
$ psql --file=foo.sql "BAR-DB" | grep PATTERN
似乎什么也没做。
psql
的文档显示了可选标志:
-o, --output=FILENAME send query results to file (or |pipe)
但我不确定如何使用它将输出通过管道传输到 grep。正确的语法是什么?
您可以将 psql 的 stderr 重定向到 stdout,然后通过管道将其传输到 grep:
psql --file=foo.sql "BAR-DB" 2>&1 | grep -- PATTERN