Начална » как да » Как да премахнем линиите от средата на файла, използвайки терминала на 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: / *! 'СТОЙНОСТИ (1,2,' 2006-09-11 05:07:23 ',' 2006-09-11

    Можете, разбира се, просто да извлечете изхода от grep в друг файл, като този:

    grep ключова дума filename.txt> outputfile

    В моя случай това не искаше да работи, защото не можах да импортирам получения архив по някаква причина. Така че намерих различен начин да извлечем линиите, използвайки sed, и този метод работи.

    sed -n '4160,4209p' howtogeekdb0101140201.bak> изходен файл

    По принцип синтаксисът е такъв, като се уверите, че използвате аргумента -n и включете “p” след втория номер на ред.

    sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' име на файл> outputfilename

    Някои други начини, по които можете да извадите определени линии в средата на файл? Можете да използвате командата "head" с аргумента + number, за да прочетете само първите x редове на файл и след това да използвате опашката, за да извлечете тези линии. Не е най-добрият вариант, много режийни. По-опростен вариант? Можете да използвате командата split, за да превърнете файла в няколко файла направо на номера на линията, който искате, и след това да извлечете линиите с главата или опашката..

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