2013-03-14 108 views
0

一個變量我有查詢這給我造成的查詢值到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

回答

0

如果你想繩剪斷原樣

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

1

如果您需要匹配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命令。