
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 -c
para contar o número de bytes. Veja man wc
outras opções.
echo
anexa uma nova linha ao final da saída, e é por isso que você obterá um caractere a mais do que esperava ao contar. Use printf
para 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:
Em vez disso, o GNU Parallel gera um novo processo quando um deles termina - mantendo as CPUs ativas e economizando tempo:
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