Sådan fjerner du linjer fra midten af en fil ved hjælp af Linux-terminalen

Video: Sådan fjerner du linjer fra midten af en fil ved hjælp af Linux-terminalen

Video: Sådan fjerner du linjer fra midten af en fil ved hjælp af Linux-terminalen
Video: ЛЮБОВЬ С ДОСТАВКОЙ НА ДОМ (2020). Романтическая комедия. Хит 2024, Marts
Sådan fjerner du linjer fra midten af en fil ved hjælp af Linux-terminalen
Sådan fjerner du linjer fra midten af en fil ved hjælp af Linux-terminalen
Anonim
Når du administrerer dine egne servere, er en af de ting, du ender med at gøre på semi-regular basis, ekstrakt fra midten af en fil. Måske er det en logfil, eller du skal ekstra et enkelt bord fra midten af din MySQL-backupfil, som jeg gjorde.
Når du administrerer dine egne servere, er en af de ting, du ender med at gøre på semi-regular basis, ekstrakt fra midten af en fil. Måske er det en logfil, eller du skal ekstra et enkelt bord fra midten af din MySQL-backupfil, som jeg gjorde.

For at finde ud af linjenumrene, gjorde en enkel grep -n-kommando jobbet (et -n-argumentet udsender linjenumrene). Dette gjorde det nemt at finde ud af, hvad jeg havde brug for at udtrække.

grep -n wp_posts howtogeekdb010114.bak | more

Resultater i noget som dette, som viser linjenumre over på venstre side af output. Piping alt i "mere" sørger for at du kan se den første linje uden at rulle ved. Nu har du linjenummeret til at begynde med, og sandsynligvis den en, der slutter med.

4160:-- Table structure for table `wp_posts` 4163:DROP TABLE IF EXISTS `wp_posts`; 4166:CREATE TABLE `wp_posts` ( 4203:-- Dumping data for table `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

Du kan selvfølgelig bare rør outputen fra grep til en anden fil, som denne:

grep keyword filename.txt > outputfile

I mit tilfælde ville det ikke fungere, fordi jeg ikke kunne importere den resulterende backup af en eller anden grund. Så jeg fandt en anden måde at udvinde linjerne ved hjælp af sed, og denne metode fungerede.

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

I grund og grund er syntaksen som denne, og sørg for at bruge -n-argumentet og inkludere "p" efter det andet linjenummer.

sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' filename > outputfilename

Nogle andre måder kan du trække specifikke linjer midt i en fil? Du kunne bruge kommandoen "hoved" med + talargumentet til blot at læse de første x linjer i en fil og derefter bruge halen til at udtrække disse linjer. Ikke den bedste løsning, masser af overhead. Enklere mulighed? Du kan bruge split-kommandoen til at dreje filen til flere filer lige ved det ønskede linjenummer, og derefter udtrække linjerne med hoved eller hale.

Eller du kan bare bruge sed.

Anbefalede: