28Jun

Kaip pašalinti linijas iš failo vidurio naudojant "Linux" terminalą

Kai tvarkote savo serverius, vienas iš dalykų, kuriuos jums reikia atlikti pusiau reguliariai, yra failo viduryje surinkti dalykai. Galbūt tai yra žurnalo failas, arba jums reikia papildomos vienos lentelės iš savo "MySQL" atsarginės kopijos failo vidurio, kaip ir aš.

Norėdami sužinoti eilučių numerius, paprasta grep -n komanda atliko darbą( -n argumentas išveda eilučių numerius).Tai leido suprasti, ko man reikia išgauti.

grep -n wp_posts howtogeekdb010114.bak |daugiau

Rezultatai kažkas panašaus į tai, kas rodo eilučių numerius kairėje išvesties pusėje. Vamzdynai viską į "daugiau" užtikrina, kad pamatytumėte pirmąją eilutę be jos slinkties. Dabar turėsite eilutės numerį, nuo kurio pradėsite, ir galbūt tas, kuris pasibaigs.

4160: - Lentelės struktūra lentelėje "wp_posts" 4163: DROP LENTELĖ, jei egzistuoja "wp_posts";4166: CREATE TABLE `wp_posts`( 4203: - Duomenų lentelių lentelės` 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 05:07:23', '2006-09-11

Galite, žinoma, tiesiog išgauti iš grep į kitą failą, tokį kaip:

grep keyword filename.txt> output file

Mano atveju, kad nenorėjo dirbti, nes negalėjau importuoti gautos atsarginės kopijos dėl kokios nors priežasties. Taigi radau kitokį būdą išgauti linijas, naudojant sed, ir šis metodas buvo darbas

sed -n '4160,4209p' howtogeekdb0101140201.bak & gt; outputfile

Iš esmės sintaksė yra tokia, įsitikinęs, kad naudojate -n argumentą ir po pogrupio antrojo eilutės numerio įrašykite "p".

sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp 'filename & gt; outputfilename

Keletas kitų būdų, kaip galite išskleisti konkrečias eilutes failo viduryje? Galite naudoti "head""Komandą su argumentu" + ", kad tiesiog perskaitytumėte pirmąsias x eilutes failo, o tada naudokite uodegą, norėdami išgauti tas eilutes. Ne geriausias variantas, daug pridėtinių.Paprastesnis variantas? Galite naudoti komandą split, norėdami paversti failą į kelis failus tiesiai ant norimo eilutės numerio, o tada ištraukite linijas naudodami galvos ar uodegą.

Arba galite tiesiog naudoti sed.