如何在 bash 脚本的 isql 输出中的正确位置插入换行符



我正在使用 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

我可以做一些笨拙的事情,比如选择"!!",然后使用 sed 用新行替换"!!",但我仍然不知道如何处理前两行(标题和破折号)。 在这种情况下,我知道我将有两个输出字段,因此我可以以某种方式计算令牌并插入换行符,但是如果我不知道在"从订单中选择*"之类的查询中将返回多少列怎么办?

我可以想到各种解决方案,但它们似乎都非常笨拙 - 有没有一种标准方法来处理这样的输出?

不知道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

最新更新