Как отфильтровать определенную базу данных с помощью grep

0

Я хочу иметь имена всех имен базы данных сервера mysql, кроме имен базы данных, содержащих слово _backup.

Пока что все это приведет ко всем именам базы данных в текстовый файл. Это должно быть выполнено в среде OS OS.

 mysql -uroot -pxpwdx -e 'show databases' | tr -d "| " | grep -v Database | grep -v information_schema | grep -v performance_schema | grep -v mysql  > database.txt

Как мне отредактировать его так, чтобы он не включал те, у которых появилось сообщение "_backup"?

например: скажем, мой сервер mysql содержит 5 баз данных a) db001 b) db001_backup20170602 c) db002 d) db003 e) db003_backup2017Aug

Я хочу только (a), (c) и (d), перечисленные в файле database.txt.

Благодарю.

Теги:
grep

2 ответа

2
Лучший ответ

Решение с помощью оператора Mysql,

mysql -uroot -pxpwdx -sse "SELECT schema_name from information_schema.schemata WHERE schema_name NOT LIKE '%_backup%' or schema_name NOT LIKE '%schema%';"

Bash Solution, с командой Show tables,

mysql -uroot -pxpwdx -sse "show databases;" | grep -Ev '_backup|schema|mysql'

Заметки,

-sse вместо -e исключает заголовки, столбцы и т.д. И выдает только значения.

-ev опция grep даст возможность grep из нескольких строк в одном выражении

  • 0
    Большое спасибо за (1) получение принципа того, что я хотел, и (2) за то, что я поделился, как я могу сократить код, используя '_backup | schema | mysql' и (3) за то, что я дал мне лучшее понимание того, что код делает.
  • 0
    Рад помочь вам, (Y). , Спасибо
1

Вы можете использовать этот запрос для получения всех баз данных без наличия в нем "резервной копии",

mysql -uroot -pxpwdx -e "SELECT 'schema_name' from INFORMATION_SCHEMA.SCHEMATA WHERE 'SCHEMA_NAME' NOT LIKE '%backup%';"

Это даст вам все базы данных без "резервного копирования" в нем, вам не нужно делать grep.

  • 0
    ваш ответ буквально все базы данных, кроме резервного копирования. Но не совсем то, что я имел в виду (извините, ошибка связана с моим описанием - я не указал точно, что я хотел, и мое описание Вся база данных и код "| grep -v База данных | grep -v information_schema | grep -v performance_schema | grep -v mysql "не похоже на гармонизацию). На самом деле, мне не нужны эти не созданные пользователем базы данных, такие как базы данных mysql и schema.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню