If-Koubou

Cum să eliminați linii din mijlocul unui fișier utilizând terminalul Linux

Cum să eliminați linii din mijlocul unui fișier utilizând terminalul Linux (Cum să)

Când gestionați serverele proprii, unul dintre lucrurile pe care trebuie să le faceți în mod semi-regulat este extragerea de chestii din mijlocul unui fișier. Poate este un fișier jurnal sau trebuie să adăugați o singură masă din mijlocul fișierului de backup MySQL, așa cum am făcut-o.

Pentru a determina numerele de linie, o comandă grep -n simplă a făcut lucrarea (argumentul -n scoate numerele de linie). Acest lucru a făcut ușor să dau seama ce am nevoie pentru a extrage.

grep -n wp_posts howtogeekdb010114.bak | Mai Mult

Rezultă în ceva de genul acesta, care arată numărul de linii de pe partea stângă a ieșirii. Ținând totul în "mai mult", asigurați-vă că puteți vedea prima linie fără să derulați. Acum aveți numărul liniei pentru a începe cu, și probabil cel cu care se termină.

4160: - Structura tabelului pentru tabelul 'wp_posts' 4163: TABELUL DROP DACĂ EXISTĂ "wp_posts"; 4166: CREATE TABLE 'wp_posts' (4203: - Datele de dumping pentru tabelul 'wp_posts' 4206: TABLURI DE BLOCARE '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

S-ar putea, desigur, să conduceți ieșirea din grep într-un alt fișier, după cum urmează:

grep cuvânt cheie filename.txt> outputfile

În cazul meu, care nu a vrut să lucreze, pentru că nu am putut importa backup-ul rezultat din vreun motiv. Deci, am găsit o altă modalitate de a extrage liniile folosind sed, iar această metodă a funcționat.

sed-n '4160,4209p' howtogeekdb0101140201.bak> outputfile

În esență, sintaxa este așa, asigurându-vă că folosiți argumentul -n și includeți "p" după al doilea număr de linie.

sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' numele fișierului> outputfilename

În alte moduri, puteți trage anumite linii în mijlocul unui fișier? Ați putea folosi comanda "cap" cu argumentul număr + pentru a citi doar prin primele linii x ale unui fișier, apoi utilizați coada pentru a extrage acele linii. Nu este cea mai bună opțiune, o mulțime de cheltuieli generale. Opțiune mai simplă? Puteți folosi comanda split pentru a transforma fișierul în mai multe fișiere chiar la numărul de linie dorit și apoi extrageți liniile utilizând capul sau coada.

Sau puteți folosi doar sed.