Ako odstrániť riadky zo stredu súboru pomocou terminálu Linux

Ako odstrániť riadky zo stredu súboru pomocou terminálu Linux
Ako odstrániť riadky zo stredu súboru pomocou terminálu Linux

Video: Ako odstrániť riadky zo stredu súboru pomocou terminálu Linux

Video: Ako odstrániť riadky zo stredu súboru pomocou terminálu Linux
Video: Section 10 - YouTube 2024, Smieť
Anonim
Keď spravujete svoje vlastné servery, jednou z vecí, ktoré skončíte, ktoré musíte vykonať na polopriestore, je extrahovať veci zo stredu súboru. Možno je to súbor denníka, alebo potrebujete doplniť jednu tabuľku od stredu vášho záložného súboru MySQL, ako som to urobil.
Keď spravujete svoje vlastné servery, jednou z vecí, ktoré skončíte, ktoré musíte vykonať na polopriestore, je extrahovať veci zo stredu súboru. Možno je to súbor denníka, alebo potrebujete doplniť jednu tabuľku od stredu vášho záložného súboru MySQL, ako som to urobil.

Ak chcete zistiť čísla riadkov, urobil úlohu jednoduchý príkaz grep -n (argument -n zobrazuje čísla riadkov). Toto umožnilo ľahko zistiť, čo som potreboval na extrakciu.

grep -n wp_posts howtogeekdb010114.bak | more

Výsledky v niečom takom, ktoré zobrazujú čísla riadkov na ľavej strane výstupu. Všetko do "viac" sa ubezpečuje, že vidíte prvý riadok bez toho, aby ste ho prechádzali. Teraz máte začiatok s číslom riadku a pravdepodobne s ním skončíte.

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

Mohli by ste, samozrejme, iba napájať výstup z grep do iného súboru, napríklad:

grep keyword filename.txt > outputfile

V mojom prípade to nechcel pracovať, pretože som nemohol importovať výslednú zálohu z nejakého dôvodu. Takže som našiel iný spôsob, ako extrahovať linky pomocou sed, a táto metóda fungovala.

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

V podstate je syntax takto, uistite sa, že používate argument -n a za druhé číslo riadku zahrňte "p".

sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' filename > outputfilename

Niektoré ďalšie spôsoby, ako môžete vytiahnuť určité riadky uprostred súboru? Môžete použiť príkaz "head" s argumentom + číslo, aby ste si prečítali prvé x riadky súboru a potom použite chvost na extrahovanie týchto riadkov. Nie je to najlepšia voľba, veľa režijných nákladov. Jednoduchšia voľba? Môžete použiť príkaz rozdeliť súbor otočiť do viacerých súborov priamo na číslo riadku, ktoré chcete, a potom extrahovať riadky pomocou hlavy alebo chvosta.

Alebo môžete jednoducho použiť sed.

Odporúča: