Как да премахнем линиите от средата на файла, използвайки терминала на 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.