2012-02-13 35 views
10

Tengo un problema que intento resolver sin éxito. Tengo que copiar parte de un archivo .txt de la línea n a la línea n + y (digamos de 1000 a 1000000). Este archivo es muy grande, así que no puedo hacerlo manualmente, así que estoy tratando de usar la terminal para hacerlo, sin éxito. Ahora probé con operadores y sed, sin éxito. Aquí está la copia de lo que he intentado:Copiar/Pegar parte de un archivo en otro archivo usando Terminal (o Shell)

sed -n "1000, 1000000p" ruta/primera/archivo> segundo trayecto/archivo/

Cualquier ayuda es muy apreciada;)

+1

No hay nada malo con el comando sed le das en el ejemplo; de qué manera falla? –

+0

Si el archivo de entrada tiene terminaciones de línea incorrectas, deberá convertirlas primero. Prueba 'dos2unix'. – tripleee

Respuesta

19

si sabe cuántas líneas hay en su archivo de origen (wc -l) puede hacer esto ... suponga 12000 líneas y desee líneas 2000 - 7000 en su nuevo archivo (un total de 5000 líneas).

cat myfile | cola -10000 | cabeza -5000> newfile

Lea las últimas 10k líneas, luego lea las primeras 5k líneas de eso.

+0

No necesita saber cuántas líneas hay en el archivo: simplemente coloque la cabeza primero. – jfg956

+0

Y si quieres poner la cola primero, puedes usar 'tail -n + 2000'. Esto también requiere menos espacio en el búfer. – jfg956

+1

Bling, uso inútil de cat. Además, el comando 'sed' original estaba bien para esto. – tripleee

1

En realidad el comando sed debería funcionar reemplazar comillas dobles con comillas simples

Cuestiones relacionadas