TheДокументация 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
...>
Можно ли отправить вывод в утилиту Unix с помощью канала из командной строки SQLite, или фильтровать вывод SQLite можно только в том случае, если вы на самом деле пишете приложение на языке C и используете библиотеку SQLite C?
решение1
Вы не можете передать вывод из интерактивной сессии SQLite, потому что это не оболочка. |
не делает в SQL то, что делает в командной строке. Вероятно, вам нужно сделать что-то похожее на sqlite3 /path/to/mydata.sqlite "select * from todos" | grep vim
, которое выполнит SQL и grep
вывод, как вы, похоже, пытаетесь сделать.
решение2
Можно отфильтровать вывод запроса с помощью команды, добавив к аргументу .output
символ ..once
|
.once '|grep vim'
select * from todos;
К сожалению, это не очень хорошо взаимодействует с программами, которые занимают весь ваш терминал, например пейджерами. Для этого я настоятельно рекомендуюлитекли.