Длина считывания переданного значения?

Длина считывания переданного значения?

Как проверить длину конвейерного ввода? Я пытаюсь:

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

Также:

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

На основеответы здесь, для примера, не относящегося к трубе.

решение1

Как@стив написал, просто используйте wc -cдля подсчета количества байтов. Смотрите man wcдругие варианты.

echoдобавляет новую строку в конец вывода, поэтому вы получите на один символ больше, чем могли бы ожидать при подсчете. Используйте printfдля более строгого контроля вывода.

решение2

Допустим, вы хотите выполнить команду, если длина аргумента меньше 2:

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

Он также будет выполнять задания параллельно — по одному на каждом ядре.

Примечание: GNU Parallel — это не тот же Parallel, что в moreutils.

GNU Parallel — это универсальный распараллеливатель, позволяющий легко запускать задания параллельно на одной машине или на нескольких машинах, к которым у вас есть доступ по SSH.

Если у вас есть 32 различных задания, которые вы хотите запустить на 4 ЦП, то прямой способ распараллеливания — запустить 8 заданий на каждом ЦП:

Простое планирование

Вместо этого GNU Parallel запускает новый процесс после завершения предыдущего, сохраняя при этом активными ЦП и, таким образом, экономя время:

Параллельное планирование GNU

Монтаж

По соображениям безопасности вам следует установить GNU Parallel с помощью вашего менеджера пакетов, но если GNU Parallel не упакован для вашего дистрибутива, вы можете выполнить персональную установку, которая не требует доступа root. Это можно сделать за 10 секунд, выполнив следующее:

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

Другие варианты установки см.http://git.savannah.gnu.org/cgit/parallel.git/tree/README

Узнать больше

Смотрите больше примеров:http://www.gnu.org/software/parallel/man.html

Посмотрите вступительные видеоролики:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Пройдите обучение:http://www.gnu.org/software/parallel/parallel_tutorial.html

Подпишитесь на рассылку, чтобы получить поддержку:https://lists.gnu.org/mailman/listinfo/parallel

Связанный контент