【问题标题】:Search text file file for number and specify range and length Grep在文本文件文件中搜索数字并指定范围和长度 Grep
【发布时间】:2019-04-09 08:45:07
【问题描述】:

所以我一直试图解决这个问题,但无法解决。

目的是过滤文本文件中的所有行,仅显示点数超过 4850 且最大为 700,000 的行。

我目前最好的命令是:

grep -E '48[1-9]{2}' "文件名" >> 文件

这只会检索积分为 48__ 的帐户以及所有无用的内容,例如包含此组合的客户用户名,例如 loggz314895。

这种方法需要很长时间,因为范围可以从 4850 到 700K 点,一次做一个需要很长时间,并且会过滤掉包含的垃圾。

我感觉这将是一个简单的命令,但我无法理解它。如果你们中的一个巫师可以帮助我,我将不胜感激。如果您也可以打破命令的每个部分的作用,那将非常有帮助。

再次感谢。

这是一个示例:(出于隐私原因已进行了编辑)。

loggz@loggz1.com,用户ID 9826135802015973221 积分1685,新loggz
时间 111.111.111

loggz@loggz1.com,用户ID 9826135802015973221 积分1685,新loggz
时间 111.111.111

loggz@loggz1.com,用户ID 9826135802015973221 积分1685,新loggz
时间 111.111.111

每个用户和时间之间没有空行。

没有换行符的预期输出:

loggz@loggz1.com,积分 1685,

loggz@loggz1.com,积分 1685,

loggz@loggz1.com,积分 1685,

【问题讨论】:

    标签: linux terminal grep cat


    【解决方案1】:

    要过滤列并进行比较,请使用awk

    awk '4850 <= $5 && $5 <= 700000'
    

    @编辑

    awk '{ if (4850 <= $5 && $5 <= 700000) { print $1,$5; } }`
    

    【讨论】:

    • 嗨,谢谢你回来!这会打印整行比较,而不仅仅是打印带有它们的值的点吗?对不起,它没有包含在案例中。你也能分解发生了什么吗?谢谢老兄。
    • printing the points with them values 表示只打印第 5 列?
    • 是的,对不起,我现在应该包含更多信息来考虑它。我需要打印出整行,而不仅仅是点的值,只需要第 1 列和第 5 列。在此 loggz9492@wizard.com 下方的行中,LoggzThunder4893 |点数:915 还有一条线,有两列长。这是整个文件的模式。示例:
    • 根据您提供的信息,我想出了 awk ' {print $1, $5} where 4850
    • awk 非常直接。如果第 5 列的值大于或等于 4850,并且第 5 列的值小于或等于 700000,则打印第 1 列和第 5 列。默认的“字段分隔符”awk 使用的是空格。如果您有问题以外的其他数据,请发布示例输入和预期输出。我根据您提供的信息提供了答案。您可以在需要时编辑您的问题。请阅读how to ask 和/或question checklist
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    相关资源
    最近更新 更多