Pagina principala » HOWTO » 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

    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.