【发布时间】:2016-07-27 23:58:23
【问题描述】:
我想在一行文本中查找所有减号实例,后跟一个数字。数字用逗号分隔,但也可以在行尾
text.txt 包含
hx,-7,u,-9,u,-8
(末尾有换行符)
我正在运行这个命令
egrep -o ',[\-][0-9][\n,]' text.txt
得到
,-7,
,-9,
但我想得到
,-7,
,-9,
,-8
编辑: 像
hx,-7,u/-9,u,-8
应该还是会产生
,-7,
,-9,
,-8
并使用
egrep -o ',[\-](1|2)?[0-9XY][\,$]' text.txt
不适合
【问题讨论】:
-
您可以将最后一个字符类更改为
[^0-9] -
在
grep中使用$锚作为行尾就足够了。 *nix 中的文本文件使用\n来终止一行。试试egrep -o ',[\-][0-9](,|$)' text.txt。 -
@alvits 谢谢,这不是我的问题,但实际上除了“,”或 \n 之外,还有更多选项,数字也可以由“/”字符代替。所以我需要 egrep -o ',[\-](1|2)?[0-9XY][\/,$]' text.txt 之类的东西,但这不适用于 "$"
-
您的帖子必须全面。我们为您提出的问题提供解决方案,但我们当然无法预测或阅读您的想法。对于您希望完成的新要求,您可以使用
egrep -o ',[\-][0-9](\/|,|$)' text.txt。我希望你不要回过头来说这个数字也可以跟别的东西。最后一个正则表达式(\/|,|$)表示这 3 个/、,、$中的任何一个都应该在数字之后。如果您有更多,只需将它们添加到列表中。|是or意味着其中之一。 -
如果您的数字后面有多个字符,您可以使用
([\/,]|$)作为最后一个正则表达式。这意味着包含在[]或|中的这些字符之一,行尾$应该跟在数字后面。