从文件打印数字,从x到y

时间:2015-11-17 13:40:40

标签: linux unix grep

我有一个数字从-100到100的文件,我只想从-10到10打印

目前,我在

egrep '[0-9][0-3]'

不幸的是,打印-13,-12,-11,-10,10,11,12,13,20,21,22,23。

3 个答案:

答案 0 :(得分:2)

尝试使用该正则表达式:

^[-]?(10|[0-9])$

因此,对CLI的调用将是:

egrep "^[-]?(10|[0-9])$" testfile

为什么?

  • 从可选的前导“ - ”
  • 开始
  • 后跟:
    • 字面数字“10”或
    • 0到9之间的单个数字
  • 并且没有任何支持

答案 1 :(得分:0)

egrep '^-?10$|^-?[0-9]$'

这基本上是两个正则表达式,一个得到10,-10和一个得到所有奇异数字

答案 2 :(得分:0)

这不是关于egrep,因为从你的评论看来你似乎不希望egrep本身就是一些替代品:

  1. 使用seq:seq first inc last

    seq -15 1 14会在自己的行上打印-15到14之间的所有数字

  2. 使用awk:awk '{ if ($1 >= first && $1 <= last) print $1 }' filename

    awk '{ if ($1 >= -15 && $1 <= 14) print $1 }' numbers.txt会在自己的行上打印-15到14之间的所有数字

  3. 使用perl:perl -lane 'print $_ if $_ >= first && $_ <= last' filename

    perl -lane 'print $_ if $_ >= -15 && $_ <= 14' numbers.txt会在自己的行上打印-15到14之间的所有行

  4. 希望有所帮助