If-Koubou

Kuinka poistaa linjat tiedoston keskeltä Linux-terminaalin avulla

Kuinka poistaa linjat tiedoston keskeltä Linux-terminaalin avulla (Miten)

Kun hallitset omia palvelimiasi, yksi niistä asioista, joita pääset tekemään puoliksi säännöllisin väliajoin, on tiedostojen keskikohdasta otettu sisältö. Ehkä se on lokitiedosto, tai sinun täytyy lisätä yksi taulukko MySQL-varmuuskopiotiedoston keskeltä, kuten minä.

Jotta selvitettäisiin rivinumerot, tehtävä yksinkertainen grep-n-komento (-n-argumentti tuottaa rivinumerot). Tämän ansiosta oli helppo selvittää, mitä tarvitsin poimia.

grep -n wp_posts howtogeekdb010114.bak | lisää

Tulokset tällaisessa muodossa, joka näyttää rivinumerot tulostuksen vasemmalla puolella. Kaikkien "enemmän" putoaminen varmistaa, että näet ensimmäisen rivin ilman, että se rullataan. Nyt sinulla on aloitusnumero, ja luultavasti loppu.

4160: Taulukon rakenne taulukon 'wp_posts' 4163: DROP TABLE IF EXISTS 'wp_posts'; 4166: LUOTTAA TAULUKKO "wp_posts" (4203: - pöytiä koskevat tiedot taulukon 'wp_posts' 4206: LOCK TABLES 'wp_posts' WRITE; 4207: / *! 40000 ALTER TAULUKKO 'wp_posts' DISABLE KEYS * /; 4208: INSERT INTO 'wp_posts 'ARVOT (1,2,' 2006-09-11 05:07:23 ',' 2006-09-11

Voit tietenkin vain putkea tuotoksen grepista toiseen tiedostoon, kuten tämä:

grep avainsanan tiedostonimi.txt> ulostulo-tiedosto

Minun tapauksessani tämä ei halunnut työskennellä, koska en voinut tuoda tuloksena olevaa varmuuskopiota jostakin syystä. Niinpä löysin toisenlaisen tavan purkaa rivit käyttäen sed, ja tämä menetelmä toimi.

sed -n '4160,4209p' howtogeekdb0101140201.bak> lähtötiedosto

Pohjimmiltaan syntaksi on näin, varmista, että käytät -n-argumenttia ja sisällytetään "p" toisen rivinumeron jälkeen.

sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' tiedostonimi> tuotosnimenimi

Joitakin muita tapoja, joilla voit vetää tiettyjä viivoja tiedoston keskelle? Voit käyttää "head" -komentoa + numero-argumentilla vain lukea ensimmäisen tiedoston x rivejä ja käyttää sitten häntää poimimaan nämä rivit. Ei ole paras vaihtoehto, paljon yleiskustannuksia. Yksinkertaisempi vaihtoehto? Voit jakaa tiedoston useille tiedostoille halutulla linjanumerolla ja jakaa sitten viivat päätä tai häntää käyttäen.

Tai voit vain käyttää sed.