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íneas2 / 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 head
s 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 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 dd
los 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.