Isso deve fazer o trabalho:
echo 123 | awk 'length >= 3 && length <= 32'
Se você canalizar várias linhas para ele, ele imprimirá linhas com entre 3 e 32 caracteres.
"nada" significa que não há saída.
Q: como posso limitar o comprimento MIN e MAX de um STRING canalizado? (MIN: x > = 3 caracteres, MAX: x < = 32 caracteres)
ENTRADA:
echo 12 | MAGIC
OUTPUT:
nothing
ENTRADA:
echo 123 | MAGIC
OUTPUT:
123
ENTRADA:
echo 123456789012345678901234567890123 | MAGIC
OUTPUT:
nothing
ENTRADA:
echo 12345678901234567890123456789012 | MAGIC
OUTPUT:
12345678901234567890123456789012
Embora o awk
one de David seja o mais óbvio, adicione à lista:
grep -xE '.{3,32}'
Usando o Perl:
perl -nle 'print if length() > 2 and length() < 33'
Teste1:
echo "12345678901234567890123456789012" | \
perl -nle 'print if length() > 2 and length() < 33'
Saída:
12345678901234567890123456789012
Teste2:
echo "123456789012345678901234567890123" | \
perl -nle 'print if length() > 2 and length() < 33'
Saída:
<Nothing>