28Jun

Πώς να αφαιρέσετε γραμμές από τη μέση ενός αρχείου χρησιμοποιώντας το τερματικό Linux

click fraud protection

Όταν διαχειρίζεστε τους δικούς σας διακομιστές, ένα από τα πράγματα που καταλήγετε να χρειάζεται να κάνετε σε ημι-κανονική βάση είναι να εξάγετε πράγματα από τη μέση ενός αρχείου.Ίσως είναι ένα αρχείο καταγραφής, ή πρέπει να προσθέσετε ένα τραπέζι από τη μέση του αντιγράφου ασφαλείας MySQL, όπως και εγώ.

Για να υπολογίσουμε τους αριθμούς γραμμών, μια απλή εντολή grep -n έκανε την εργασία( το όρισμα -n εξάγει τους αριθμούς γραμμών).Αυτό το καθιστούσε εύκολο να καταλάβεις τι χρειάζομαι για να αποσπάσω.

grep -n wp_posts howtogeekdb010114.bak |περισσότερα

Αποτελέσματα σε κάτι σαν αυτό, το οποίο δείχνει τους αριθμούς γραμμών πάνω στην αριστερή πλευρά της εξόδου.Τοποθετώντας τα πάντα σε "περισσότερα" βεβαιώνεστε ότι μπορείτε να δείτε την πρώτη γραμμή χωρίς να το μετακινηθείτε.Τώρα έχετε τον αριθμό γραμμής για να ξεκινήσετε με, και ίσως αυτός που τελειώνει με.

4160: - Δομή πίνακα για το τραπέζι `wp_posts` 4163: ΠΙΝΑΚΑΣ ΔΡΟΜΟΥ ΑΝ ΥΠΑΡΧΕΙ` wp_posts`;4166: Δημιουργία πίνακα `wp_posts`( 4203: - Αποσβέσεις για πίνακα 'wp_posts' 4206: ΚΛΕΙΔΑΡΙΕΣ ΚΛΕΙΔΑΡΙΑΣ` wp_posts` WRITE; 4207: / *! 40000 ALTER TABLE `wp_posts` ΔΙΑΚΟΠΗ ΚΛΕΙΔΙΩΝ * /; 4208: ΕΙΣΑΓΩΓΗ` wp_posts`VALUES( 1,2, '2006-09-11 05:07:23', '2006-09-11
instagram viewer

Θα μπορούσατε, βεβαίως, απλώς να διοχετεύσετε την έξοδο από το grep σε ένα άλλο αρχείο, όπως αυτό:

grep filename.txt & outputfile

Στην περίπτωσή μου, αυτό δεν ήθελε να δουλέψει, επειδή δεν μπορούσα να εισάγω το προκύπτον αντίγραφο ασφαλείας για κάποιο λόγο.Έτσι, βρήκα έναν διαφορετικό τρόπο για να αποσπάσω τις γραμμές χρησιμοποιώντας το sed και αυτή η μέθοδος δούλεψε.

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

Βασικά η σύνταξη είναι όπως αυτή, φροντίζοντας να χρησιμοποιήσετε το όρισμα -n και να συμπεριλάβετε το p μετά τον δεύτερο αριθμό γραμμής

sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp 'όνομα αρχείου & gt; outputfilename

Μερικοί άλλοι τρόποι που μπορείτε να τραβήξετε συγκεκριμένες γραμμές στη μέση ενός αρχείου; Θα μπορούσατε να χρησιμοποιήσετε το κεφάλι"Με το όρισμα του αριθμού + για να διαβάσετε μόνο τις πρώτες γραμμές x ενός αρχείου και, στη συνέχεια, χρησιμοποιήστε την ουρά για να εξαγάγετε αυτές τις γραμμές.Δεν είναι η καλύτερη επιλογή, πολλά έξοδα.Απλούστερη επιλογή;Μπορείτε να χρησιμοποιήσετε την εντολή split για να μετατρέψετε το αρχείο σε πολλά αρχεία απευθείας στον αριθμό γραμμής που θέλετε και στη συνέχεια να εξάγετε τις γραμμές χρησιμοποιώντας κεφαλή ή ουρά.

Ή μπορείτε απλά να χρησιμοποιήσετε sed.