Kuinka poistaa linjat tiedoston keskeltä Linux-terminaalin avulla

Kuinka poistaa linjat tiedoston keskeltä Linux-terminaalin avulla
Kuinka poistaa linjat tiedoston keskeltä Linux-terminaalin avulla

Video: Kuinka poistaa linjat tiedoston keskeltä Linux-terminaalin avulla

Video: Kuinka poistaa linjat tiedoston keskeltä Linux-terminaalin avulla
Video: Älä näpistä! - YouTube 2024, Huhtikuu
Anonim
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ä.
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 | more

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:-- Table structure for table `wp_posts` 4163:DROP TABLE IF EXISTS `wp_posts`; 4166:CREATE TABLE `wp_posts` ( 4203:-- Dumping data for table `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

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

grep keyword filename.txt > outputfile

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 > outputfile

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' filename > outputfilename

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.

Suositeltava: