查询值到shell脚本
问题描述:
一个变量我有查询这给我造成的查询值到shell脚本
app_no
--------
(0 rows)
我需要的只是部分行和太只是数量。我将结果保存到一个变量中,但我无法解析它。
napp=`psql -U postgres appdb -c "select appno from app.apps where properties&2048=1024
cap=$(echo "$napp"|sed -n 's/[0-9][0-9] rows/\1/p')
echo "$cap"
我只需要行数,也只是数字。
答
如果你想绳剪断原样:
napp=$(psql -U postgres appdb -c "
select appno frpm app.apps
where properties&2048=1024;"
)
cap=$(echo "$napp" | sed -nr 's/.*\(([0-9]+) rows.*/\1/p')
echo "$cap"
但更好的解决方案是Jonathan Leffler's一个
+0
太棒了!谢谢 ! – JumpOffBox 2013-03-14 19:45:57
答
如果您需要匹配appno
条目数,那么你应该大概使用:
SELECT COUNT(*) FROM app.apps WHERE properties & 2048 = 1024
但答案总是0,因为条件总是goi ng给出0或错误。你需要相同的比特的两倍,即坚持标题和摘要是讨厌当shell脚本或者两者1024或两个2048
SELECT COUNT(*) FROM app.apps WHERE properties & 1024 = 1024
SELECT COUNT(*) FROM app.apps WHERE properties & 2048 = 2048
SQL接口。然而,psql手册表明-q
和-t
可以帮助(与太-A
,也许):
-
-A
或--no-align
切换为非对齐输出模式。 (缺省输出模式是对齐。)
-
-q
或--quiet
声明psql将安静地做其工作。默认情况下,它会打印欢迎消息和各种信息输出。如果使用此选项,则不会发生这种情况。这对于-c选项很有用。在psql中,你也可以设置QUIET变量来达到同样的效果。
-
-t
或--tuples-only
关闭列名称和结果行计数脚注的印刷等,这是相当于
\t
命令。
你最后一句话不是很清楚。你只需要符合条件的行数?没有任何多余的标题和页脚等?如果是这样,请参阅我的答案。如果没有,请澄清。 – 2013-03-14 19:39:37