【问题标题】:How do I use grep to get numbers larger than 50 from a txt file如何使用 grep 从 txt 文件中获取大于 50 的数字
【发布时间】:2021-04-26 01:20:04
【问题描述】:

我对 grep 和 unix 比较陌生。我正在尝试从 txt 文件中获取赢得 50 多场比赛的人的姓名。到目前为止,我使用的代码是cat file.txt|grep -E "[5-9][0-9]$",但这只是给我 50-99 的数字。我怎么能从50-200得到它。谢谢!!

driver races wins
Some_Man 90 160
Some_Man 10 80

上面的格式和数据的格式差不多,虽然没有表格化。

【问题讨论】:

  • 感谢您以代码的形式展示您的努力,您能否在您的问题中发布输入和预期输出示例,以便更好地理解您的问题,谢谢。
  • Rank Country Driver Races Wins 1 [United_Kingdom] Lewis_Hamilton 264 94 2 [Germany] Sebastian_Vettel 254 53。
  • 您能否在您的问题中使用代码标签发布这些内容,以便更好地理解您的问题,谢谢。
  • 我已经这样做了,如果您在理解数据方面需要更多帮助,请告诉我。谢谢

标签: linux unix sed grep


【解决方案1】:

输入:

Rank Country Driver Races Wins
1 [United_Kingdom] Lewis_Hamilton 264 94
2 [Germany] Sebastian_Vettel 254 53
3 [Spain] Fernando_Alonso 311 32
4 [Finland] Kimi_Raikkonen 326 21
5 [Germany] Nico_Rosberg 200 23

Awk 会是一个更好的选择:

awk '$4>=50 && $4<=200 { print $0 }' file

检查第四个空格分隔的字段($4 - 更改为实际的字段编号)是否大于或等于 50 且小于或等于 200,如果条件满足则打印行 ($0)满足了

【讨论】:

    【解决方案2】:

    你必须使用 grep 吗?你可以像这样使用 awk: awk '{if($[replace with the field number]&gt;50)print$2}' &lt; file.txt

    假设您的字段由空格分隔,否则您可以使用 -F 标志指定分隔符。

    如果你必须使用 grep,那么它就像你做的那样是正则表达式。要使其达到 50 到 200,您将执行以下操作: cat file.txt|grep -E "(\b[5-9][0-9]|\b1[0-9][0-9])$"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-25
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      相关资源
      最近更新 更多