Tengo un archivo grande y necesito dividirlo en dos archivos. Suponga que en el primer archivo las 1000 líneas deben seleccionarse y colocarse en otro archivo y eliminar esas líneas en el primer archivo.
Intenté usarlo split
pero está creando múltiples fragmentos.
text-processing
awk
split
csplit
Aravind
fuente
fuente
split --help
?Respuestas:
La forma más fácil es probablemente usar
head
ytail
:Eso colocará las primeras 1000 líneas desde
input-file
adentrooutput1
y todas las líneas desde 1001 hasta el final enoutput2
fuente
Creo que ese
split
es tu mejor enfoque.Intente usar la
-l xxxx
opción, donde xxxx es el número de líneas que desea en cada archivo (el valor predeterminado es 1000).Puede usar la
-n yy
opción si le preocupa más la cantidad de archivos creados. El uso-n 2
dividirá su archivo en solo 2 partes, sin importar la cantidad de líneas en cada archivo.Puede contar la cantidad de líneas en su archivo con
wc -l filename
. Este es el comando 'wordcount' con la opción de líneas.Referencias
man split
man wc
fuente
split -l 1000 bigfile && mv xaa piece1 && cat x?? > piece2 && rm x??
.Este es un trabajo para
csplit
:se
s
dividirá ilegítimamenteinfile
, la primera piezaxx00
- hasta pero sin incluir la línea 1001 y la segunda piezaxx01
- las líneas restantes.Puede jugar con las opciones si necesita diferentes nombres de archivos de salida, por ejemplo, usando
-f
y especificando un prefijo :produce dos archivos nombrados
piece.00
ypiece.01
Con un smart
head
también podrías hacer algo como:fuente
csplit
. Muy agradable. (Solo estoy leyendo la lista de comandos POSIX y tuve enormes problemas paracsplit
entender el propósito del comando al principio. Resulta que es realmente muy simple.) :)Una manera simple de hacer lo que pide la pregunta, en un comando:
o, para aquellos de ustedes que realmente odian escribir comandos largos, intuitivamente comprensibles,
fuente