我在bash脚本中使用isql查询数据库(SQL Server)。例如:
RESULT="$(${ISQL} -Q -U ${DB_USER} -S ${DB_SERVER} -D ${DB_NAME} << __END
SELECT order_id % 5 as mod5, count(*) as count
FROM orders
GROUP BY order_id % 5
ORDER BY order_id % 5
GO
__END
)"
我的输出:
mod5 count -------------------- ----------- 0 17640 1 17640 2 17638 3 17637 4 17638
如何让输出中包含新行?例如:
mod5 count
-------------------- -----------
0 18118
1 18118
2 18116
3 18116
4 18117
我可以做一些hacky,比如选择'!!!'然后使用sed替换'!!!'有一个新的行,但我仍然不知道前两行(标题和破折号)做了什么。在这种情况下,我知道我将有两个输出字段,所以我可以以某种方式计算标记并插入换行符,但如果我不知道将在查询中返回多少列,例如“select * from orders” “?
我可以想到各种解决方案,但它们看起来都非常难以理解 - 是否有一种标准的方式来处理这样的输出?
答案 0 :(得分:0)
不知道isql或sql-server。但对于你的问题,这是有效的:
.cmd ..gives..output|xargs -n2
包含您的数据:
kent$ echo "mod5 count -------------------- ----------- 0 17640 1 17640 2 17638 3 17637 4 17638"|xargs -n2
mod5 count
-------------------- -----------
0 17640
1 17640
2 17638
3 17637
4 17638