Saltar al contenido

Dividir: ¿cómo dividir en diferentes porcentajes?

Nuestros investigadores estrellas agotaron sus provisiones de café, en su búsqueda día y noche por la resolución, hasta que Xavier encontró la solución en GitHub por lo tanto ahora la compartimos aquí.

Solución:

Los comandos a continuación funcionarán para porcentajes superiores al 50% (si desea dividir solo en dos archivos), enfoque rápido y sucio.

1) dividir el 70 % según las líneas

split -l $[ $(wc -l filename|cut -d" " -f1) * 70 / 100 ] filename 

2) dividir el 70 % en función de los bytes

split -b $[ $(wc -c filename|cut -d" " -f1) * 70 / 100 ] filename

podrías usar csplit para dividir en dos partes (usando cualquier porcentaje), por ejemplo, primera parte: el primer 20 % de las líneas, segunda parte: el 80 % restante de las líneas:

csplit infile $(( $(wc -l < infile) * 2 / 10 + 1))

$(wc -l < infile) : número total de líneas
2 / 10 : porcentaje
+1 : añadir una línea porque csplit divisiones up to but not including line N

Sin embargo, solo puede dividir en función de las líneas.
Básicamente, siempre que tenga el número de línea a través de $(( $(wc -l < file) * 2 / 10)) puede usar cualquier herramienta orientada a la línea:

sed 1,$(( $(wc -l < infile) * 2 / 10))'
w 20-infile
d
' infile > 80-infile

o, incluso más fresco:

 head -n$(( $(wc -l < infile) * 2 / 10)) > 20-infile; cat > 80-infile;  

aunque algunos heads son tontos y no cumplirán con los estándares, por lo que esto no funcionará en todas las configuraciones...

   BS=$(($(wc -c file1; cat
 file2 2>/dev/null

... debería funcionar para este caso simple porque solo está dividiendo una vez, y probablemente split es un poco exagerado. Siempre que se pueda buscar el archivo, dd solo hare un solo read() en y entonces cat queda para comenzar su read() en cualquier punto dd lo deja

Si el archivo es grande, entonces un count=1 bs=$big_ol_num podría volverse un poco difícil de manejar, y se puede bloquear con algunas matemáticas de shell adicionales, pero simples.

Una entrada no buscable, como la de una tubería, podría sesgarse ddlos resultados de , aunque esto también se puede manejar con GNU dd's iflag=fullblock.

Reseñas y calificaciones del artículo

Si eres capaz, tienes la habilidad dejar un artículo acerca de qué le añadirías a esta noticia.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Respuestas a preguntas comunes sobre programacion y tecnología