查询值到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" 

我只需要行数,也只是数字。

+0

你最后一句话不是很清楚。你只需要符合条件的行数?没有任何多余的标题和页脚等?如果是这样,请参阅我的答案。如果没有,请澄清。 – 2013-03-14 19:39:37

如果你想绳剪断原样

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命令。