繁体   English   中英

在sed上使用负数

[英]Using negative numbers with sed

使用sed ,我可以使用[0-9]来匹配任何数字。 但是,这似乎只是在寻找正数。 我还要如何查找以-开头的数字,例如-10

[0-9]与数字0到9不匹配。它与字符0、1、2、3、4、5、6、7、8和9匹配。

要拥有它,需要在其前面加上-字符,只需将其放在其中,并以反斜杠转义即可,因此它在正则表达式中没有通常的特殊含义。 因此\\-[1-9]将匹配字符串-1,-2等,直到-9。

如果您希望它匹配任何负数,请使用:

\-[0-9]+

(“ +表示“先前事物的一个或多个出现”,因此在这种情况下为“一个或多个数字”。)

如果您希望它匹配任何负数或正数,请使用:

\-?[0-9]+  

?表示“上一件事的发生次数为一或零”,因此此处的意思是“一或什么都不发生”。)

更新

@Jonathan Leffler指出,如果您的sed版本不支持扩展的正则表达式,则以上操作将无效。 如果它们不起作用,请改用以下方法:

\-[0-9]\{1,\}
\-\{0,1\}[0-9]\{1,\}

同样,乔纳森(Jonathan)的答案也包括了这一点,它也将匹配前导+ ,这在问题中没有要求,但可以肯定是一个很好的选择:

[-+]\{0,1\}[0-9]\{1,\}

这应该工作:

\-?[0-9]+

正则表达式[0-9]匹配任何单个十进制数字。

要匹配sed可选的带符号十进制整数,请使用:

[-+]\{0,1\}[0-9]\{1,\}

\\{0,1\\}表示匹配前一个正则表达式(是-或a + )的0或1次出现,后跟\\{1,\\} (一个或多个)数字[0-9]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM