Kaip pašalinti linijas nuo failo vidurio naudojant „Linux“ terminalą
Kai valdote savo serverius, vienas iš dalykų, kuriuos jums reikia atlikti pusiau reguliariai, yra ištraukti medžiagą iš failo vidurio. Galbūt tai yra žurnalo failas, arba jums reikia papildyti vieną lentelę nuo MySQL atsarginės kopijos failo vidurio, kaip ir aš.
Norėdami išsiaiškinti eilutės numerius, paprasta grep -n komanda atliko užduotį (-n argumentas pateikia eilutės numerius). Dėl to buvo lengva išsiaiškinti, ką turiu išgauti.
grep -n wp_posts howtogeekdb010114.bak | daugiau
Rezultatai panašūs į tai, kas rodo eilutės numerius kairėje išvesties pusėje. Viskas, kas veda į „daugiau“, užtikrina, kad pirmąją eilutę matysite be jos slinkimo. Dabar jūs turite eilės numerį, su kuriuo pradėsite, ir tikriausiai tą, su kuriuo baigsite.
4160: - lentelės struktūra „wp_posts“ 4163: DROP TABLE IF EXISTS 'wp_posts'; 4166: CREATE TABLE 'wp_posts' (4203: - lentelės dempingo duomenys wp_posts '4206: LOCK TABLES' wp_posts 'WRITE; 4207: / *! 40000 ALTER TABLE' wp_posts 'DISABLE KEYS * /; 4208: INSERT INTO' wp_posts „VERTĖS (1,2,„ 2006-09-11 05:07:23 “,“ 2006-09-11)
Žinoma, galėtumėte tiesiog perkelti grep išvestį į kitą failą, pvz .:
grep raktinis žodis filename.txt> outputfile
Mano atveju tai nenorėjo dirbti, nes negalėjau importuoti gautos atsarginės kopijos dėl kokios nors priežasties. Taigi, aš rasiu kitą būdą ištraukti linijas, naudojant sedą, ir šis metodas veikė.
sed -n '4160,4209p' howtogeekdb0101140201.bak> outputfile
Iš esmės sintaksė yra tokia: įsitikinkite, kad naudosite -n argumentą ir po antrojo eilutės numerio pridėsite „p“.
sed -n „FIRSTLINENUMBER, LASTLINENUMBERp“ failo pavadinimas> outputfilename
Kitu būdu galite ištraukti konkrečias linijas failo viduryje? „Head“ komandą galite naudoti su + skaičiaus argumentu, kad tiesiog perskaitytumėte pirmąsias x eilutes, o tada naudokite uodegą, kad ištrauktumėte šias linijas. Ne geriausias variantas, daug pridėtinių. Paprastesnis variantas? Galite naudoti skaldytą komandą, kad failą paverstumėte keliais failais tiesiai į norimą eilutės numerį ir ištraukite linijas naudodami galvą arba uodegą.
Arba galite tiesiog naudoti sed.