管道psql错误输出到grep

管道psql错误输出到grep,grep,pipe,psql,Grep,Pipe,Psql,我正在运行一个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 (o

我正在运行一个
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

psql--file=foo.sql“BAR-DB”2>&1|grep--PATTERN怎么样?也许这篇文章可以帮助你:@codefrester你的第一个建议让我得到了我想要的!你介意把它作为一个答案转寄给我吗?这样我就可以把它标上答案了?(你能解释一下
2>&1
--
在做什么吗?)