如何使用两个选项卡分隔 isql 输出列

如何使用两个选项卡分隔 isql 输出列

我有一个实用程序(isql 的包装器),它执行 sybase 查询并提供输出。我想用两个选项卡分隔两列。该实用程序的帮助如下:

<-s>       : resets the column separator character, which is blank by default

我尝试-s\\t使用选项卡分隔所有列。

然而尝试 -s\t\t 会给出奇怪的输出,例如:

1\t\tS1\t\tmaindb\t\t1\t\t1\t\t1\t\t1\t\t50\t\t10\t\t0\t\tNULL\t\tNULL\t\tNULL\t\tNULL\t\t1\t\t

我也尝试过-s' '(eight spaces), -s"\t\t", -s/\t/\t(I knew this wouldn't work, but still), -s\2t, -s\t+1,但似乎没有任何效果。

我该如何解决这个问题?

答案1

如果该isql命令允许细绳作为其选项的参数-s而不仅仅是单个字符(我无法测试这一点),那么您应该能够使用指定两个选项卡

isql -s $'\t\t' ...

bash壳里。您还可以插入两个文字按两次选项卡Ctrl+VTab,或使用

isql -s "$( printf '\t\t' )" ...

如果该选项不允许使用多个分隔符(如手册中所暗示的,其中显示“列分隔符特点" 而不是 " 列分隔符细绳"),那么除了可能对查询结果进行后处理之外,您无能为力。

以下将加倍来自标准输入流的所有选项卡isql(使用bash插入带有 的选项卡$'\t';GNU无需使用sed即可理解,并且在其他 shell 中,使用或上面提到的 hack):\t$Ctrl+VTabprintf

isql -s $'\t' ... | sed $'s/\t/&&/g'

相关内容