Lendo o comprimento do valor canalizado?

Lendo o comprimento do valor canalizado?

Como posso verificar o comprimento de uma entrada canalizada? Estou tentando:

echo "A" | xargs sh -c 'echo ${#$1}'

Também:

echo "A" | xargs sh -c 'echo ${#\"$1\"}'

Com base norespostas aqui, para um exemplo sem pipe.

Responder1

Como@steve escreveu, basta usar wc -cpara contar o número de bytes. Veja man wcoutras opções.

echoanexa uma nova linha ao final da saída, e é por isso que você obterá um caractere a mais do que esperava ao contar. Use printfpara controlar a saída de forma mais rigorosa.

Responder2

Digamos que o que você deseja é executar o comando se um argumento tiver menos de 2:

seq 100 | parallel echo '{= length($_) >= 2 and skip =}'

Ele também executará os trabalhos em paralelo – um em cada núcleo.

NB: GNU Parallel não é o paralelo em moreutils.

GNU Parallel é um paralelizador geral e facilita a execução de trabalhos em paralelo na mesma máquina ou em várias máquinas às quais você tem acesso ssh.

Se você tiver 32 jobs diferentes que deseja executar em 4 CPUs, uma maneira simples de paralelizar é executar 8 jobs em cada CPU:

Agendamento simples

Em vez disso, o GNU Parallel gera um novo processo quando um deles termina - mantendo as CPUs ativas e economizando tempo:

Agendamento paralelo GNU

Instalação

Por razões de segurança você deve instalar o GNU Parallel com seu gerenciador de pacotes, mas se o GNU Parallel não estiver empacotado para sua distribuição, você pode fazer uma instalação pessoal, que não requer acesso root. Isso pode ser feito em 10 segundos fazendo o seguinte:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

Para outras opções de instalação consultehttp://git.savannah.gnu.org/cgit/parallel.git/tree/README

Saber mais

Veja mais exemplos:http://www.gnu.org/software/parallel/man.html

Assista aos vídeos de introdução:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Percorra o tutorial:http://www.gnu.org/software/parallel/parallel_tutorial.html

Inscreva-se na lista de e-mail para obter suporte:https://lists.gnu.org/mailman/listinfo/parallel

informação relacionada