28Jun

Så här tar du bort linjer från mitten av en fil med Linux-terminalen

När du hanterar dina egna servrar är en av de saker du slutar behöva göra på semi-regular basis extrakt från en fils mitten. Kanske är det en loggfil, eller du behöver extra ett enda bord från mitten av din MySQL-backupfil, som jag gjorde.

För att räkna ut radnummer, gjorde ett enkelt grep -n-kommando jobbet( ett -n-argumentet matar ut linjenummer).Det gjorde det lätt att ta reda på vad jag behövde extrahera.

grep -n wp_posts howtogeekdb010114.bak |mer

Resultat i något som detta, vilket visar linjenummer över på vänster sida av utgången. Pipa allt till "mer" ser till att du kan se första raden utan att rulla av. Nu har du linjenummer för att börja med, och förmodligen den som ska sluta med.

4160: - Tabellstruktur för tabell `wp_posts` 4163: DROP TABLE IF EXISTS` wp_posts`;4166: CREATE TABLE `wp_posts`( 4203: - Dumpningsdata för tabell` wp_posts` 4206: LOCK TABLES `wp_posts` WRITE; 4207: / *! 40000 ALTER TABELL` wp_posts` DISABLE KEYS * /; 4208: INSERT INTO `wp_posts`Värderingar( 1,2, '2006-09-11 05:07:23', '2006-09-11

Du kan naturligtvis bara pipa utmatningen från grep till en annan fil, så här:

grep sökordets filnamn.txt & gt; outputfile

I mitt fall ville det inte fungera eftersom jag inte kunde importera den resulterande säkerhetskopian av någon anledning. Så hittade jag ett annat sätt att extrahera raderna med sed, och den här metoden fungerade

sed -n '4160,4209p' howtogeekdb0101140201.bak & gt; outputfile

I grunden är syntaxen så här, se till att använda -n-argumentet och inkludera "p" efter det andra radenummeret.

sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp 'filnamn & gt; outputfilename

Några andra sätt kan du dra ut specifika linjer mitt i en fil? Du kan använda huvudet"Kommando med + talargumentet för att bara läsa igenom de första x raderna i en fil och använd sedan svansen för att extrahera de här raderna. Inte det bästa alternativet, mycket överhead. Enklare alternativ? Du kan använda split-kommandot för att vrida filen i flera filer direkt vid önskat radnummer och sedan extrahera linjerna med huvud eller svans.

Eller du kan bara använda sed.