If you keep your database backed up into a single SQL dump and want to retrieve only the part matching one database, perhaps to transfer to another system, I find the simplest and most re-usable trick is to use
sed's "p" function which prints the "pattern space" to
STDOUT even when normal output is suppressed:
sed -n '/^-- Current Database: `YOURDBNAME`/,/^-- Current Database: `/p' alldbs.sql > out.sql
In the above command the
-n will suppress all the normal output from
sed -- otherwise we'd simply list every line of the input file. Then we list two regular expressions, comma separated (the "p" function accepts a maximum on 2 patterns). This tells the "p" function to start printing when it sees the first expression, in this case the line signifying that the start of the desired database's backup, and stops when it sees the second -- the header to the next backed up database (inclusive).
sed is pointed to our database backup and we redirect any
STDOUT output to a new file.
From there you just have to send the identified SQL commands to
mysql -u root -p YOURDBNAME < out.sql
You can re-use this
sed trick on other files when you know where the interesting part starts and ends.