#database #search #command-line
#База данных #Поиск #командная строка
Вопрос:
Я хотел бы создать (или использовать, если таковая уже существует) приложение на основе командной строки, которое создает, изменяет и выполняет поиск в базе данных.
В идеале эта база данных должна представлять собой простой текстовый файл, где каждая строка является записью.
Как в этом простом примере:
Apple Fruit Malus Green/Red 55
Banana Fruit Musa acuminata Yellow 68
Carrot Veget. D. carota Orange 35
Допустим, этот текст хранится в ~/database.txt
Я хотел бы иметь возможность выполнять поиск по всем записям типа fruit
(возвращающий, Apple
и Banana
) или по всем записям, в которых количество килокалорий меньше, чем 60
(возвращающий Apple
и Carrot
) в командной строке.
Возврат должен происходить через стандартный вывод терминала и должен выглядеть следующим образом:
$mydatabasesearch cal '<60'
Apple Fruit Malus Green/Red 55
Carrot Veget. D. carota Orange 35
Кроме того, возможность добавления в базу данных через командную строку была бы потрясающей!
Есть ли что-нибудь, что делает это? Если нет, то как бы вы порекомендовали мне написать такое приложение? Я немного знаю C
, но это все…
Ответ №1:
Взгляните на sqlite. Это немного сложнее, чем обычные текстовые файлы, но намного мощнее.
Ответ №2:
Обычные текстовые файлы на самом деле не считаются базами данных.
Если вы хотите придерживаться текстовых файлов и командной строки, взгляните на обычные утилиты unix, такие как grep
, awk
и пакет coreutils ( cat
, cut
, uniq
, …), которые работают с текстовыми файлами. Добавьте эти команды в shellscript, и все готово.
Как только вы перейдете на какую-либо систему баз данных, у вас больше не будет текстовых файлов в качестве хранилища.
Помимо уже упомянутого sqlite, на библиотеку Berkeley DB также стоит обратить внимание, если вы хотите написать свою собственную программу. Обе библиотеки должны быть хороши в вашем случае, поскольку для них не требуется внешний сервер базы данных (например, mysql)
Ответ №3:
Вы можете сделать это в Unix в любом случае с помощью файла SED с разделителями и, возможно, какой-нибудь простой командной строки perl, которую вы можете обернуть в скрипт bash. В wikibooks есть хорошее руководство по работе с данными, и SED, который вы могли бы использовать, вероятно, есть здесь и во второй части руководства.