Домашня » як » Як видалити рядки з середини файлу за допомогою терміналу Linux

    Як видалити рядки з середини файлу за допомогою терміналу Linux

    Коли ви керуєте своїми власними серверами, однією з речей, які вам доведеться робити напіврегулярно, є вилучення матеріалу з середини файлу. Може бути, це лог-файл, або вам потрібно додатково одну таблицю з середини файлу резервної копії MySQL, як я це зробив.

    Щоб зрозуміти номери рядків, проста команда grep -n виконала завдання (аргумент -n виводить номери рядків). Це дозволило легко зрозуміти, що мені потрібно витягти.

    grep -n wp_posts howtogeekdb010114.bak | більше

    Результат - це щось подібне, яке показує лініші рядків на лівій стороні виводу. Увімкнення всього в "більше" гарантує, що ви можете побачити перший рядок без прокручування. Тепер у вас є номер рядка, з якого можна почати, і, мабуть, той, який закінчується.

    4160: - Структура таблиці для таблиці 'wp_posts' 4163: DROP TABLE IF EXISTS 'wp_posts'; 4166: CREATE TABLE 'wp_posts' (4203: - Дані для столу 'wp_posts' 4206: LOCK TABLES 'wp_posts' WRITE; 4207: / *! 40000 ALTER TABLE ' 'VALUES (1,2,' 2006-09-11 05:07:23 ',' 2006-09-11

    Можна, звичайно, просто передати висновок з grep в інший файл, наприклад:

    grep ключове слово filename.txt> outputfile

    У моєму випадку, це не хотілося працювати, тому що я не міг імпортувати отриману резервну копію з якоїсь причини. Отже, я знайшов інший спосіб вилучення ліній з використанням sed, і цей метод спрацював.

    sed -n '4160,4209p' howtogeekdb0101140201.bak> outputfile

    В основному синтаксис подібний до цього, переконавшись у використанні аргументу -n, і включити "p" після другого номера рядка.

    sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' ім'я файлу> outputfilename

    Деякі інші способи можна витягти конкретні рядки посередині файлу? Ви можете скористатися командою "head" з аргументом + number, щоб просто прочитати перші x рядки файлу, а потім скористатися хвостом для вилучення цих рядків. Не найкращий варіант, багато накладних витрат. Простіший варіант? За допомогою команди split можна перетворити файл на декілька файлів прямо на потрібний номер рядка, а потім витягнути рядки за допомогою голови або хвоста.

    Або ви можете просто використовувати sed.