Kako ukloniti linije iz sredine datoteke pomoću Linux terminala
Kada upravljate vlastitim poslužiteljima, jedna od stvari koju trebate učiniti polu-redovito je izvući stvari iz sredine datoteke. Možda je to datoteka zapisnika, ili trebate dodati jednu tablicu iz sredine vaše MySQL sigurnosne datoteke, kao što sam i učinio.
Da bi shvatili brojeve redova, jednostavna grep -n naredba obavila je posao (argument -n daje brojeve redaka). Zbog toga je bilo lako shvatiti što mi je potrebno za izdvajanje.
grep -n wp_posts howtogeekdb010114.bak | više
Rezultat je nešto slično ovome, koji pokazuje brojeve redaka na lijevoj strani izlaza. Piping sve u "više" osigurava da možete vidjeti prvi redak bez pomicanja po. Sada imate broj linije za početak, i vjerojatno 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 dampingu za tablicu 'wp_posts' 4206: LOCK TABLICE 'wp_posts' WRITE; 4207: / *! 40000 ALTER TABLE 'wp_posts' DISABLE KEYS * /; 4208: INSERT INTO 'wp_posts 'VRIJEDNOSTI (1,2,' 2006-09-11 05:07:23 ',' 2006-09-11
Mogli biste, naravno, samo ispisati izlaz iz grep-a u drugu datoteku, kao što je ovaj:
grep ključna riječ filename.txt> outputfile
U mom slučaju, to nije htjelo raditi, jer iz nekog razloga nisam mogao uvesti dobivenu sigurnosnu kopiju. Tako sam pronašao drugačiji način izdvajanja linija korištenjem seda, i ova metoda je uspjela.
sed -n '4160,4209p' howtogeekdb0101140201.bak> outputfile
U osnovi sintaksa je takva, pazeći da koristite argument -n i uključite “p” nakon drugog broja retka.
sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' naziv datoteke> outputfilename
Neki drugi načini na koje možete izvući određene linije u sredini datoteke? Možete upotrijebiti naredbu "head" s argumentom + number da biste samo pročitali prve x crte datoteke, a zatim upotrijebite rep da biste izvukli te retke. Nije najbolja opcija, puno nadzemnih. Jednostavnija opcija? Pomoću naredbe split možete pretvoriti datoteku u više datoteka točno na željeni broj retka, a zatim izdvojiti crte pomoću glave ili repa.
Ili možete koristiti samo sed.