¿Lectura de longitud del valor canalizado?

¿Lectura de longitud del valor canalizado?

¿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 -cpara contar el número de bytes. Consulte man wcpara otras opciones.

echoagrega 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 printfpara 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:

Programación sencilla

En cambio, GNU Parallel genera un nuevo proceso cuando uno finaliza, manteniendo las CPU activas y, por lo tanto, ahorrando tiempo:

Programación paralela GNU

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

información relacionada