Cum să eliminați linii din mijlocul unui fișier utilizând terminalul Linux
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 că 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.
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ă numerele de linie de pe partea stângă a ieșirii. Împingeți 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 și, probabil, cel care va termina cu.
4160: - Structura tabelului pentru tabelul "wp_posts" 4163: TABELUL DROP DACĂ EXISTĂ "wp_posts"; 4166: CREATE TABLE 'wp_posts' (4203: - Datele 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 dintr-un 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 ca aceasta, 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 și 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 folosind capul sau coada.
Sau puteți folosi doar sed.