Digamos que quiero editar todos los archivos en una carpeta, cambiando cada encabezado. Estoy usando este script:
for cosa en $(ls $1); hacer sed -i '1c\SNP A2 A1 beta NP' $cosa hecha
El problema es que lleva mucho tiempo. Entonces, me gustaría encontrar una manera de dedicar más RAM para este script, para hacerlo rápidamente. ¿Es posible?
Me gustaría encontrar una manera de dedicar más RAM para este script, para hacerlo rápidamente. ¿Es posible?
No. Las herramientas que usa, bash para enumerar sus archivos y sed para editarlos, toman la memoria RAM que necesitan para hacer su trabajo. No pueden usar más RAM incluso si tuvieran una forma de dársela.
Puede ejecutar sus operaciones sed en paralelo. Esto usa más núcleos en su máquina y puede terminar más rápido. Ponga un carácter & después de cada comando en el ciclo. Algo como esto.
for thing in $(ls $1); do sed -i '1c\SNP A2 A1 beta NP' $thing & doneCon GNU Parallel puedes controlar cuántos se ejecutan en paralelo:
doit() { sed -i '1c\SNP A2 A1 beta NP' "$1" } export -f doit ls $1 | parallel -j5 doit Ajuste -j5 hasta que encuentre el número que le proporcione el mayor rendimiento.