
¿Cómo puedo verificar la longitud de una entrada entubada? Lo estoy intentando:
echo "A" | xargs sh -c 'echo ${#$1}'
También:
echo "A" | xargs sh -c 'echo ${#\"$1\"}'
Basado en elrespuestas aquí, para un ejemplo sin tubería.
Respuesta1
Como@steve escribió, solo utilícelo wc -c
para contar el número de bytes. Consulte man wc
para otras opciones.
echo
agrega una nueva línea al final de la salida, por lo que obtendrás un carácter más de lo que esperarías al contar. Úselo printf
para controlar la producción de manera más estricta.
Respuesta2
Digamos que lo que desea es ejecutar el comando si un argumento tiene menos de 2 longitudes:
seq 100 | parallel echo '{= length($_) >= 2 and skip =}'
También ejecutará los trabajos en paralelo, uno en cada núcleo.
NB: GNU Parallel no es el paralelo en moreutils.
GNU Parallel es un paralelizador general y facilita la ejecución de trabajos en paralelo en la misma máquina o en varias máquinas a las que tiene acceso ssh.
Si tiene 32 trabajos diferentes que desea ejecutar en 4 CPU, una forma sencilla de paralelizar es ejecutar 8 trabajos en cada CPU:
En cambio, GNU Parallel genera un nuevo proceso cuando uno finaliza, manteniendo las CPU activas y, por lo tanto, ahorrando tiempo:
Instalación
Por razones de seguridad, debe instalar GNU Parallel con su administrador de paquetes, pero si GNU Parallel no está empaquetado para su distribución, puede realizar una instalación personal, que no requiere acceso de root. Se puede hacer en 10 segundos haciendo esto:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
Para otras opciones de instalación consultehttp://git.savannah.gnu.org/cgit/parallel.git/tree/README
Aprende más
Ver más ejemplos:http://www.gnu.org/software/parallel/man.html
Mira los vídeos de introducción:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Sigue el tutorial:http://www.gnu.org/software/parallel/parallel_tutorial.html
Regístrese en la lista de correo electrónico para obtener ayuda:https://lists.gnu.org/mailman/listinfo/parallel