2つのタブを使用してisql出力列を分割する方法

2つのタブを使用してisql出力列を分割する方法

Sybaseクエリを実行して出力を提供するユーティリティ(isqlの周りのラッパー)があります。 2つのタブで2つの列を分割したいです。このユーティリティは次のように役立ちます。

<-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シェルに。 2つを挿入することもできます。言葉タブをダブルクリックCtrl+VTabするか

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

オプションが複数の区切り文字を受け入れない場合(マニュアルで提案されているように「列区切り記号」と呼ばれる)特徴「代わりに」列区切り記号ひも")、それではクエリ結果を後処理する以外にできることはあまりありません。

以下は、標準入力ストリームから出てくるすべてのタブを2倍にしますisqlbashタブで挿入を使用します。GNU$'\t'は、sed上記のハックや他のシェルを使用せずにこれを理解します):\t$Ctrl+VTabprintf

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

おすすめ記事