Comprimento de leitura do valor canalizado?

1

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

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

Além disso:

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

Com base nas respostas aqui , para um exemplo que não seja de canal.

    
por Philip Kirkbride 07.07.2017 / 15:07

2 respostas

3

Como @steve escreveu , use apenas wc -c para contar o número de bytes. Veja man wc para outras opções.

echo acrescenta uma nova linha ao final da saída , e é por isso que você terá mais um caractere do que o esperado na contagem. Use printf para controlar a saída com mais rigor.

    
por 07.07.2017 / 15:14
1

Digamos que você queira executar o comando se um argumento for menor que 2 longos:

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 mais habilidades.

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

Se você tem 32 tarefas diferentes que você quer rodar em 4 CPUs, uma forma direta de paralelizar é rodar 8 tarefas em cada processador:

O

GNUParallelgeraumnovoprocessoquandoumtermina-mantendoasCPUsativaseeconomizandotempo:

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 ao fazer isso:

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

Para outras opções de instalação, consulte o link

Saiba mais

Veja mais exemplos: link

Assista aos vídeos de introdução: link

Percorra o tutorial: link

Inscreva-se na lista de e-mail para obter suporte: link

    
por 08.07.2017 / 03:12

Tags