2011-07-01 3 views
13

sqlite3の出力をタブで区切りたい。空白とmy値を持つレコードにスペースは含まれていてタブはないので、-columnオプションは私には合いません。sqlite3の出力を1行のコマンドでタブで表示

私は対話的にsqlite3を使用する場合、.mode tabを使用できます。 1行のコマンドにオプション-separatorがありますが、そこにタブを追加する方法がわかりません。リテラルではない(おそらくASCIIコードですか?)と解釈されます。

何か提案がありますか?私が見つけたすべてのGoogleの例は、インタラクティブなsqlite3用です。

現時点では私は強引なアプローチを使用しています:

sqlite3 -header mydb "select * from table1" | tr \| '\t' > myoutput 
+0

タブ(一重引用符で囲んで) –

+2

あなたの自己コメントを回答として書き換えてください(2日後に受け入れて自己回答を受け入れることができます)ので、問題が解決したことは明らかです。同様の問題に直面し、解決策を探しています。ありがとう。 –

+0

@jan、ありがとう私は答えとして私のコメントを置くことができますが、事は私がこの解決策(どちらもtrのいずれか)が好きではないということです。私はコードの再利用性と保守性について強い意見を持っているので、コマンドラインでスペースとタブを明示的に区別しないコードは好きではありません。私は現時点でより良い解決策を待つでしょう。 –

答えて

23

これは動作するはずです:

sqlite3 -separator $'\t' -header mydb "select * from table1" 

を$はタブ文字に展開するシェルに指示します。

シェルスクリプトでのsqliteを使用しているときのように文書化しますが、ここで直接使用することによって(例えば) .mode tabを使用することができます
+0

+1これは私のソリューションよりも優れています。あなたが気にしないなら、私は現時点で他の回答を少し待つでしょう。 –

12

:コントロール-V:私は-separatorオプションにタブを追加する方法を見つけた

sqlite3 -header mydb <<EOF 
.mode tabs 
select * from table1; 
EOF 
関連する問題