如何使用sed获取特定字符和空格之间的字符串?

如何使用sed获取特定字符和空格之间的字符串?,sed,Sed,在下面的字符串中,我需要-和空格之间的数字 RXOTG-196 HK6500A 0 我想要的结果是196 如何使用sed执行此操作? 位数不一定是3,有时是2或1位数。此模式适用于我的sed: $ echo 'RXOTG-196 HK6500A 0' | sed -E 's/.*[A-Z]-([0-9]+).*/\1/' 196 sed -e 's_^[^-]*-\([^ ]*\).*$_\1_' 这可能适用于您(GNU-sed): 用换行符包围所需字符串,并且只打印与数字匹配的行,然后

在下面的字符串中,我需要
-
和空格之间的数字

RXOTG-196 HK6500A 0
我想要的结果是196
如何使用sed执行此操作?

位数不一定是3,有时是2或1位数。

此模式适用于我的sed:

$ echo 'RXOTG-196 HK6500A 0' | sed -E 's/.*[A-Z]-([0-9]+).*/\1/' 
196
sed -e 's_^[^-]*-\([^ ]*\).*$_\1_'
这可能适用于您(GNU-sed):


用换行符包围所需字符串,并且只打印与数字匹配的行,然后是换行符。这将在单独的行上打印所有匹配项。

有趣的是在
*
=”之后添加
$
锚点)最好少一点:如果在
-
之前有一个
-
,后面跟一个数字,后面跟一个空格,会发生什么情况?然后第二个连字符将包含在输出中,例如
-196
。如果要在模式中的该点吸收任意数量的连字符,请使用加号:
-+
如果我将上述输入
RXOTG-196 HK6500A 0
仅作为多行输入中的一行,我只需要169行,而不需要其他额外的行
sed -r 's/-([0-9]+) /\n\1\n/;/^[0-9]+\n/P;D' file