28Jun

Come rimuovere le righe dalla metà di un file usando il terminale Linux

Quando gestisci i tuoi server, una delle cose che hai bisogno di fare su base semi-regolare è estrarre le cose dal centro di un file. Forse è un file di registro, o è necessario aggiungere una singola tabella dal centro del tuo file di backup MySQL, come ho fatto io.

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 |più

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: - Struttura della tabella per la tabella `wp_posts` 4163: DROP TABLE IF EXISTS` wp_posts`;4166: CREATE TABLE `wp_posts`( 4203: - Scaricamento dei dati per la tabella` 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, collegare l'output di grep in un altro file, come questo:

grep keyword filename.txt & gt; outputfile

Nel mio caso, che 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 & gt; file di uscita

Fondamentalmente la sintassi è così, assicurandosi di usare l'argomento -n e includere la "p" dopo il secondo numero di riga.

sed -n 'FIRSTLINENUMBER, LASTLINENUMBER 'nomefile & gt; nomefile output

Alcuni altri modi per estrarre linee specifiche nel mezzo di un file? Potresti usare la "testa""Comando con l'argomento + number per leggere solo le prime x linee 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.

Oppure puoi semplicemente usare sed.