SQLite コマンドライン: 出力を UNIX ユーティリティにパイプするにはどうすればよいですか?

SQLite コマンドライン: 出力を UNIX ユーティリティにパイプするにはどうすればよいですか?

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

デフォルトの出力モードは「リスト」です。
[...]
リスト モードは、クエリの出力を別のプログラム (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 vimこれにより、SQL が実行され、grep目的どおりに出力されます。

答え2

.outputまたは.onceの引数の前に を付けることで、コマンドを通じてクエリの出力をフィルタリングすることができます|

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

残念ながら、これはポケベルのように端末全体を占有するプログラムとはうまく連携しません。そのため、私はライトクリ

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

関連情報