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

Когда вы управляете своими собственными серверами, одна из вещей, которые вам приходится выполнять на полурегулярной основе, — это извлечение содержимого из середины файла. Возможно, это файл журнала, или вам нужно добавить одну таблицу из середины файла резервной копии MySQL, как я сделал.

Чтобы выяснить номера строк, простая команда grep -n выполнила работу (аргумент -n выводит номера строк). Это позволило легко понять, что мне нужно извлечь.

 grep -n wp_posts howtogeekdb010114.bak | более 

В результате получается что-то вроде этого, которое показывает номера строк в левой части вывода. Ввод всего в «больше» гарантирует, что вы сможете увидеть первую строку без прокрутки. Теперь у вас есть номер строки для начала и, вероятно, тот, который заканчивается.

 4160: - Структура таблицы для таблицы `wp_posts`
4163: DROP TABLE, ЕСЛИ СУЩЕСТВУЕТ `wp_posts`;
4166: CREATE TABLE `wp_posts` (
4203: - Сброс данных для таблицы `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> выходной файл 

В основном, синтаксис такой: убедитесь, что вы используете аргумент -n и включаете «p» после номера второй строки.

 sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' имя_файла> имя выходного файла 

Какими еще способами вы можете вытащить определенные строки в середине файла? Вы можете использовать команду «head» с аргументом + number, чтобы просто прочитать первые x строк файла, а затем использовать tail для извлечения этих строк. Не лучший вариант, много накладных расходов. Более простой вариант? Вы можете использовать команду split, чтобы превратить файл в несколько файлов прямо по желаемому номеру строки, а затем извлечь строки, используя голову или хвост.

Или вы можете просто использовать sed.

Оцените статью
TutoryBird.Ru
Добавить комментарий