Ako odstrániť riadky zo stredu súboru pomocou terminálu Linux
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 zo stredu vášho záložného súboru MySQL, ako som to urobil.
Ak chcete zistiť čísla riadkov, jednoduchý príkaz grep -n vykonal úlohu (argument -n zobrazuje čísla riadkov). Toto umožnilo ľahko zistiť, čo som potreboval na extrakciu.
grep -n wp_posts howtogeekdb010114.bak viac
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 prechádzali. Teraz máte číslo linky na začiatku, a pravdepodobne ten, ktorý skončí.
4160: - Štruktúra tabuľky pre tabuľku 'wp_posts' 4163: TABUĽKA DROP AK JE EXISTENIE 'wp_posts'; 4166: Vytvoriť tabuľku 'wp_posts' (4203: - Dumpingové dáta pre tabuľku 'wp_posts' 4206: LOCK TABLES 'wp_posts' WRITE; 4207: / * 40000 ALTER TABLE 'wp_posts' DISABLE KEYS * /; 4208: INSERT INTO 'wp_posts 'HODNOTY (1,2,' 2006-09-11 05:07:23 ',' 2006-09-11
Mohli by ste, samozrejme, iba odvádzať výstup z grep do iného súboru, napríklad:
grep kľúčové slovo filename.txt> výstupný súbor
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> výstupný súbor
V podstate je syntax takto, uistite sa, že použijete argument -n a za druhým riadkom číslo "p".
sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' názov súboru> outputfilename
Niektoré iné spôsoby, ako môžete vytiahnuť určité čiary uprostred súboru? Mohli by ste použiť príkaz "head" s argumentom + pre čítanie len prvých x riadkov 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 požadované číslo riadku a potom extrahovať riadky pomocou hlavy alebo chvosta.
Alebo môžete jednoducho použiť sed.