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 splitpero 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
headytail:Eso colocará las primeras 1000 líneas desde
input-fileadentrooutput1y todas las líneas desde 1001 hasta el final enoutput2fuente
Creo que ese
splites tu mejor enfoque.Intente usar la
-l xxxxopción, donde xxxx es el número de líneas que desea en cada archivo (el valor predeterminado es 1000).Puede usar la
-n yyopción si le preocupa más la cantidad de archivos creados. El uso-n 2dividirá 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 splitman wcfuente
split -l 1000 bigfile && mv xaa piece1 && cat x?? > piece2 && rm x??.Este es un trabajo para
csplit:se
sdividirá 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
-fy especificando un prefijo :produce dos archivos nombrados
piece.00ypiece.01Con un smart
headtambién podrías hacer algo como:fuente
csplit. Muy agradable. (Solo estoy leyendo la lista de comandos POSIX y tuve enormes problemas paracsplitentender 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