Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex LinuxGrep-将文件中的数字从x打印到y_Regex_Linux_Unix_Grep - Fatal编程技术网

Regex LinuxGrep-将文件中的数字从x打印到y

Regex LinuxGrep-将文件中的数字从x打印到y,regex,linux,unix,grep,Regex,Linux,Unix,Grep,我只是问如何从-10和10打印,虽然我现在明白了,但我不知道如何从不同的范围打印,例如从-8到23 我第一次做的 egrep '^-?[0-8]?[0]?[1-9]$' numbers.txt 从-24打印到24 egrep '^[-]?[0-8]$+\.?' numbers.txt 从-8打印到8 我怎样才能把它们结合起来,得到-8。。23?例如,你可以说: egrep '^(-?0?[0-8]|9|1[0-9]|2[0-3])$' 这将使用^(选项1 |选项2 | | |选项n)$匹配

我只是问如何从-10和10打印,虽然我现在明白了,但我不知道如何从不同的范围打印,例如从-8到23

我第一次做的

egrep '^-?[0-8]?[0]?[1-9]$' numbers.txt
从-24打印到24

egrep '^[-]?[0-8]$+\.?' numbers.txt
从-8打印到8


我怎样才能把它们结合起来,得到-8。。23?

例如,你可以说:

egrep '^(-?0?[0-8]|9|1[0-9]|2[0-3])$'
这将使用
^(选项1 |选项2 | | |选项n)$
匹配以下情况:

  • -0?[0-8]
    -8到8
  • 9
    9
  • 1[0-9]
    10到19
  • 2[0-3]
    20到23
我的版本

egrep --color '[-][1-8]|([0]|[1])[0-9]|[2][0-3]'
[-][1-8]
#-1到-8

([0]|[1])[0-9]
第0-19页


[2][0-3]
#20-23

添加问题的链接。注意:请使用
|
对不起,在你的另一个问题中使用原始问题,你说文件中有数字-100到100;该文件中有201行,第一行包含-100,最后一行包含100?如果是这样,有一个比使用grep更好的方法。新文件只包含-100,-24。。24100为了方便起见,每次我尝试一个命令都会让人不知所措。我现在尝试的命令是egrep“^-?[0-8]?[0]?[1-9]$”numbers.txt,结果是-24到24(不包括-100或100)。grep是用于此作业的错误工具。也许您想对行进行排序,然后运行
awk
打印从-8到23的行?非常感谢您的帮助,这与我的尝试相去甚远,但我想我对这一点有了更好的理解。很高兴读到这篇文章!它解决了你的问题吗,@dain?既然你是新来的,如果你的问题已经解决了,请别忘了把答案标为“接受”。您可以点击答案旁边的复选标记,将答案从空心切换为绿色。看看你有什么问题!
1.
部分也可以捕获
1x
1$
甚至
,例如,如果您想确保它只捕获数字,您必须以以下方式指定它:
1[0-9]
或作为完整的表达式:
“^(-0?[0-8]| 9 | 1[0-9]| 2[0-3])”
@Yaron您是对的。我有点懒,以为所有的数据都是数字。更新,谢谢!根据文件的格式,您可能需要添加一个
-x
选项。如果OP的输入文件包含
100
,则该文件将包含与正则表达式匹配的
10