Как удалить строки из середины файла с помощью терминала Linux

Как удалить строки из середины файла с помощью терминала Linux
Как удалить строки из середины файла с помощью терминала Linux

Видео: Как удалить строки из середины файла с помощью терминала Linux

Видео: Как удалить строки из середины файла с помощью терминала Linux
Видео: Steam OS 3.3 (HoloISO) - Steam Deck на PC - Создание флешки, установка и обзор. Arch KDE Plasma - YouTube 2024, Май
Anonim
Когда вы управляете своими собственными серверами, одна из вещей, которые вам нужно делать на регулярной основе, - это извлечение материала из середины файла. Возможно, это файл журнала, или вам нужно добавить отдельную таблицу из середины вашего файла резервной копии MySQL, как и я.
Когда вы управляете своими собственными серверами, одна из вещей, которые вам нужно делать на регулярной основе, - это извлечение материала из середины файла. Возможно, это файл журнала, или вам нужно добавить отдельную таблицу из середины вашего файла резервной копии MySQL, как и я.

Чтобы выяснить номера строк, простая команда 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.

Рекомендуемые: