2017-02-16 24 views
0

Вывод содержит только 0 и 1. Он должен иметь ровно одну цифру «1», за которой следует либо количество 0. Я попробовал под регулярным выражением - он находит завершение нулей, но не может отфильтровать предшествующие ненулевые значения. (см. нижеприведенные случаи).Как правильно совместить цифру '1' или за ней следует любое число, если 0?

# echo 00000000020000000000010000000000 | grep -E "0{1,}+10{8,}0$" 
00000000020000000000010000000000 #not ok 
# echo 6C740100000000000000000000000000 | grep -E "0{1,}+10{8,}0$" 
6C740100000000000000000000000000 #not ok 
# echo 0001000100000000000000000000000000 | grep -E "0{1,}+10{8,}0$" 
0001000100000000000000000000000000 #not ok 
# echo 0000000100000000000000000000000000 | grep -E "0{1,}+10{8,}0$" 
0000000100000000000000000000000000 #ok 

Мне не хватает чего-то очень простого. спасибо за любую помощь.

ответ

3

Вы слишком задумываетесь об этом.

echo "..." | grep '^0*10*$' 

^ и $ убедитесь, что вы соответствие всей линии, а не только подстроки в середине. 0* - ноль или более 0с; 1 не требует пояснений :).

+0

Да, вы правы :) Примите это как ответ через несколько минут, как только SO позволит мне это сделать. спасибо за помощь: D –