Devo rimuovere le prime 42 righe di un dump SQL da 2 GB.
So di poter visualizzare le prime righe usando:
head -n 44 dump.sql
Ma c'è comunque modo di modificarli o rimuoverli?
Devo rimuovere le prime 42 righe di un dump SQL da 2 GB.
So di poter visualizzare le prime righe usando:
head -n 44 dump.sql
Ma c'è comunque modo di modificarli o rimuoverli?
Risposte:
Se vuoi solo vedere le linee dalla 43a in poi puoi usare
tail -n +43 dump.sql
Il +segno è importante: senza di esso, invece, tailverranno stampate le ultime 43 righe. In alternativa con 'sed'
sed 1,42d dump.sql
Se vuoi veramente cancellare le prime 42 righe dal file originale, allora puoi fare in modo che il cambiamento avvenga sul posto con l' -iopzione
sed -i 1,42d dump.sql
sed -i 1,50000000d 17GigFilecrea un file temporaneo sedXYZche consuma molti più gigabyte. Esiste un approccio senza file temporanei?
tail -n +43e head -n 44come menzionato nella domanda?
Questo sembra essere il più semplice:
sed '1,42d' test.sql > test2.sql
Rimuovere le righe 1-42 da test.sql e salvare come test2.sql
Puoi usare Vim in modalità Ex:
ex -s -c '1d42|x' dump.sql
1 passa alla prima riga
42 seleziona 42 righe
d Elimina
x salva e chiudi
Mi dispiace, non posso darti il codice attuale in questo momento. Tuttavia, prova a guardare qualcosa sulla falsariga di
tail -n arcv(`wc -l`) -44
Ciò che dovrebbe fare (una volta formattato correttamente) è contare il numero di righe nel file (wc -l), sottrarre 44 da esso (-44) e quindi stampare tutto a partire dalla 45a riga nel file.
Spero che questo aiuti e buona fortuna.
wc -lsul file, si elabora due volte, mentre sedo tailelaborare una sola volta.
A causa delle seddiscrepanze tra Linux e Mac, ho deciso di utilizzare il tail -n +43 dump.sql > dump.sqlformato.
tail. Ho trovato molte volte qualcosa di nuovo da imparare dalle tue risposte. Grazie.