Kada upravljate vlastitim poslužiteljima, jedna od stvari koju trebate učiniti na polu-redovnoj osnovi je ekstrakt stvari iz sredine datoteke. Možda je to zapisnička datoteka ili trebate dodati jednu tablicu iz sredine vaše MySQL sigurnosne datoteke, kao što sam to učinila.
Da biste odredili brojeve linija, jednostavna naredba grep-n obavila je posao ("n" argument daje redni brojevi). To je olakšalo shvatiti što trebam izvaditi.
grep -n wp_posts howtogeekdb010114.bak | više
Rezultati u nečemu ovakvom, koji prikazuje crte na lijevoj strani izlaza. Sve cijevi u "više" osiguravaju da možete vidjeti prvu liniju bez da se pomaknete. Sada morate započeti broj linije, a vjerojatno i onaj s kojim ćete završiti.
4160: - Struktura tablice za tablicu 'wp_posts' 4163: DROP TABLE IF EXISTS 'wp_posts'; 4166: CREATE TABLE 'wp_posts' (4203: - Podaci o polaganju podataka za tablicu 'wp_posts' 4206: LOCK TABLES 'wp_posts' WRITE; 4207: / *! 40000 ALTER TABLE 'wp_posts' DISABLE KEYS * /; 4208: INSERT U 'wp_posts 'VALUES (1,2,' 2006-09-11 05:07:23 ',' 2006-09-11
Možete, naravno, samo cijev izlaz iz grep u drugu datoteku, kao što je ovaj:
grep ključna riječ filename.txt> izlazni datoteka
U mom slučaju, to nije htjelo raditi, jer nisam mogao uvesti rezultirajuću rezervnu iz nekog razloga. Dakle, pronašao sam drukčiji način izdvajanja linija pomoću sed, a ta je metoda uspjela.
sed -n '4160,4209p' howtogeekdb0101140201.bak> izlazni zapis
Uglavnom je sintaksa ovakav, pazeći pritom na argument -n i uključite "p" nakon drugog broja retka.
sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' naziv datoteke> izlazni filename
Na neki drugi način možete izvući određene linije usred datoteke? Možete upotrijebiti naredbu "glavu" s argumentom + broj da biste jednostavno pročitali prve x retke datoteke, a zatim upotrijebite rep za izdvajanje tih redaka. Nije najbolja opcija, puno opterećenja. Jednostavnija opcija? Možete upotrijebiti naredbu Split kako biste datoteku pretvorili u više datoteka izravno na željeni broj linije, a zatim izvlačite linije pomoću glave ili repa.
Ili jednostavno možete koristiti sed.