SQLiteコマンドライン:出力をUNIXユーティリティにパイプする方法は?

SQLiteコマンドライン:出力をUNIXユーティリティにパイプする方法は?

これSQLiteドキュメント そのコマンドラインクライアントは、SQLiteクエリの出力がUNIXユーティリティを介してフィルタリングできることを示します。

デフォルトの出力モードは「リスト」です。
[...]
リストモードは、追加処理のためにクエリ出力を別のプログラム(AWKなど)に送信したい場合に特に便利です。

SQLiteコマンドプロンプトで生成された出力の例

sqlite> select * from todos;
1|finish reading getting started section of the vim manual
2|finish app feature

その後、コマンドにパイプを追加しようとすると、新しいプロンプトが表示されます。

sqlite> select * from todos; | grep vim
...> 

SQLiteコマンドラインでパイプを使用して出力をUnixユーティリティに送信できますか?それとも、実際にCアプリケーションを作成してSQLite Cライブラリを使用している場合にのみSQLite出力をフィルタリングできますか?

答え1

対話型SQLiteセッションはシェルではないため、出力をパイプできません。 |SQLでは、コマンドラインとは異なります。おそらくあなたがしなければならないことは、sqlite3 /path/to/mydata.sqlite "select * from todos" | grep vimSQLを実行してgrep何をしたいのかを出力することです。

答え2

.output.onceクエリ出力は、パラメータの前または追加でコマンドでフィルタリングできます|

.once '|grep vim'
select * from todos;

残念ながら、これは端末全体を占めるプログラム(ポケットベルなど)とうまく対話しません。このために、私は強くお勧めしますレタリー

https://sqlite.org/cli.html#writing_results_to_a_file

関連情報