Per capire i numeri di riga, un semplice comando grep -n ha eseguito il lavoro (l'argomento -n restituisce i numeri di riga). Ciò ha reso facile capire cosa dovevo estrarre.
grep -n wp_posts howtogeekdb010114.bak | more
Risultati in qualcosa di simile, che mostra i numeri di linea sul lato sinistro dell'output. Piping tutto in "more" fa in modo che tu possa vedere la prima linea senza che scorra. Ora hai il numero di riga da cui iniziare, e probabilmente quello con cui terminare.
4160:-- Table structure for table `wp_posts` 4163:DROP TABLE IF EXISTS `wp_posts`; 4166:CREATE TABLE `wp_posts` ( 4203:-- Dumping data for table `wp_posts` 4206:LOCK TABLES `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
Potresti, ovviamente, semplicemente reindirizzare l'output di grep in un altro file, in questo modo:
grep keyword filename.txt > outputfile
Nel mio caso, questo non voleva funzionare, perché non potevo importare il backup risultante per qualche motivo. Quindi, ho trovato un modo diverso per estrarre le linee usando sed, e questo metodo ha funzionato.
sed -n '4160,4209p' howtogeekdb0101140201.bak > outputfile
Fondamentalmente la sintassi è così, assicurandosi di usare l'argomento -n e includere la "p" dopo il secondo numero di riga.
sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' filename > outputfilename
In altri modi puoi estrarre linee specifiche nel mezzo di un file? Potresti usare il comando "head" con l'argomento + number per leggere solo le prime x righe di un file, e quindi usare tail per estrarre quelle linee. Non l'opzione migliore, un sacco di spese generali. Opzione più semplice? È possibile utilizzare il comando split per trasformare il file in più file direttamente con il numero di riga desiderato, quindi estrarre le linee utilizzando head o tail.
O puoi semplicemente usare sed.