2012-02-13 16 views
10

Ho un problema che sto cercando di risolvere senza successo. Devo copiare parte di un file .txt dalla riga n alla riga n + y (diciamo 1000 a 1000000). Questo file è molto grande quindi non posso farlo manualmente, quindi sto cercando di usare il terminale per farlo, senza successo. In questo momento ho provato con gli operatori e sed, senza successo. Ecco la copia di quello che ho provato:Copia/Incolla parte di un file in un altro file utilizzando Terminal (o Shell)

sed -n/primo/file>/secondo/file di percorso "1000, 1000000p" percorso

Ogni aiuto è molto apprezzato;)

+1

Non c'è niente di sbagliato con il comando sed si dà l'esempio; in che modo fallisce? –

+0

Se il file di input ha terminazioni di riga non corrette, sarà necessario prima convertirle. Prova 'dos2unix'. – tripleee

risposta

19

se sai quante righe ci sono nel tuo file sorgente (wc -l) puoi farlo .. supponi 12000 linee e vuoi le linee 2000 - 7000 nel tuo nuovo file (totale di 5000 linee).

cat myfile | tail -10000 | head -5000> newfile

Leggere le ultime 10 righe, quindi leggere le prime 5 righe da quella.

+0

Non hai bisogno di sapere quante righe ci sono nel file: semplicemente metti la testa per prima. – jfg956

+0

E se vuoi prima mettere la coda, puoi usare 'tail -n + 2000'. Anche questo richiede meno spazio nel buffer. – jfg956

+1

Bling, uso inutile di Cat. Inoltre, il comando 'sed' originale andava bene per questo. – tripleee

1

In realtà il vostro comando sed dovrebbe funzionare basta sostituire le virgolette con le virgolette singole

Problemi correlati