2017-02-16 41 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或更多0; 1是不言而喻的:)。

+0

是的,你是正确的:)一旦SO允许我这样做,几分钟后会接受这个答案。感谢您的帮助:D –

相关问题