Чтобы выяснить номера строк, простая команда grep -n выполнила задание (аргумент -n выводит номера строк). Это позволило легко понять, что мне нужно было извлечь.
grep -n wp_posts howtogeekdb010114.bak | more
Результат примерно такой, который показывает номера строк в левой части вывода. Трубопровод всего в «больше» гарантирует, что вы можете увидеть первую строку без прокрутки. Теперь у вас есть номер строки, и, возможно, это конец.
4160:-- Table structure for table `wp_posts` 4163:DROP TABLE IF EXISTS `wp_posts`; 4166:CREATE TABLE `wp_posts` ( 4203:-- Dumping data for table `wp_posts` 4206:LOCK TABLES `wp_posts` WRITE; 4207:/*!40000 ALTER TABLE `wp_posts` DISABLE KEYS */; 4208:INSERT INTO `wp_posts` VALUES (1,2,'2006-09-11 05:07:23','2006-09-11
Вы могли бы, конечно, просто передать вывод grep в другой файл, например:
grep keyword filename.txt > outputfile
В моем случае это не хотело работать, потому что по какой-то причине я не смог импортировать результирующую резервную копию. Итак, я нашел другой способ извлечь строки с помощью sed, и этот метод действительно сработал.
sed -n '4160,4209p' howtogeekdb0101140201.bak > outputfile
В основном синтаксис подобен этому, поэтому обязательно используйте аргумент -n и включайте «p» после второго номера строки.
sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' filename > outputfilename
Некоторые другие способы вытащить определенные строки в середине файла? Вы можете использовать команду «head» с аргументом + number, чтобы просто прочитать первые строки x файла, а затем использовать хвост для извлечения этих строк. Не самый лучший вариант, много накладных расходов. Упрощенный вариант? Вы можете использовать команду split, чтобы превратить файл в несколько файлов прямо на нужный номер строки, а затем извлечь строки с помощью головы или хвоста.
Или вы можете просто использовать sed.