Jak odstranit čáry ze středu souboru pomocí terminálu Linux
Když spravujete své vlastní servery, jedna z věcí, které nakonec musíte dělat na poloprávné bázi, je extrahovat věci ze středu souboru. Možná je to soubor s protokoly, nebo potřebujete doplnit jednu tabulku uprostřed záložního souboru MySQL, jako já.
Chcete-li zjistit čísla řádků, provedl jednoduchý příkaz grep -n (argument -n zobrazuje čísla řádků). Díky tomu bylo snadné zjistit, co potřebuji k extrakci.
grep -n wp_posts howtogeekdb010114.bak | více
Výsledkem je něco podobného, které ukazuje čísla řádků na levé straně výstupu. Všechna potřeba do "více" zajistí, že vidíte první řádek, aniž byste procházeli. Nyní máte počáteční číslo linky a pravděpodobně ten, který skončí.
4160: - Struktura tabulky pro tabulku 'wp_posts' 4163: TABULKA DROP Pokud existuje "wp_posts"; 4166: CREATE TABLE 'wp_posts' (4203: - Dumpingová data pro tabulku '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 byste samozřejmě pouze vypustit výstup z grep do jiného souboru, například:
grep klíčové slovo filename.txt> výstupní soubor
V mém případě to nechtěl fungovat, protože jsem z nějakého důvodu nemohl importovat výslednou zálohu. Takže jsem našel jiný způsob, jak extrahovat linky pomocí sed, a tato metoda fungovala.
sed -n '4160,4209p' howtogeekdb0101140201.bak> výstupní soubor
V podstatě je tato syntaxe takto: ujistěte se, že používáte argument -n a za druhým řádkem číslo "p".
sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' název_souboru> výstupní_soubor
Některé další způsoby, jak vyndat určité čáry uprostřed souboru? Mohli byste použít příkaz "head" s argumentem + pro čtení pouze prvních x řádků souboru a pak použít ocas pro extrahování těchto řádků. Nejlepší alternativa, spousta režie. Jednoduchá volba? Pomocí příkazu rozdělit můžete soubor přesunout do více souborů přímo na požadované číslo řádku a potom extrahovat řádky pomocí hlavy nebo ocasu.
Nebo můžete jen použít sed.