如何使用 grep 来生成

如何使用 grep 来生成

我如何生成一个显示文件中最低数字的列表?

前任。

  1. 列表项 2476 Jackie Woodson :经理: :销售: :05/01/59:110000
  2. 列表项 2000 杰克·威尔逊 :董事: :会计: :04/19/55:80000
  3. 列表项 7700 Wilson Ali :executie: :accounts: :08/30/56:90000
  4. 列表项 3364 Bill Wilcocks :经理: :销售: :12/12/55:65000

  5. 列表项 4290 Neil O'bryan :执行: :账户: :05/01/59:100000

  6. 列表项 2000 Wilson Albert :主席: :制作: :03/12/50:125000

我想列出 60000 到 9000 之间的范围,并仅列出使用 grep 的那些

我试过了

grep "[69]" .....$ 文件名

答案1

grep不进行数字比较,因此不是此处要使用的工具。我会使用:

sort --field-separator=":" --numeric-sort --reverse --key=7 --ignore-leading-blanks filename | \
    tail --lines=3  | \
    sort --field-separator=":" --numeric-sort --key=7 --ignore-leading-blanks

答案2

grep是行匹配工具,这意味着它只匹配包含特定文本的行。您需要的是文本处理实用程序,例如awk可以进行比较的实用程序。

$ awk -F ':' '$NF > 60000 && $NF<90000' list.txt                                  
List item 2000 Jack Wilson :director: :accounts: :04/19/55: 80000
List item 3364 Bill Wilcocks :manager: :sales: :12/12/55: 65000

其工作方式很简单:

  • -F ':'告诉 awk 将每一行视为一组由冒号分隔的单词
  • '$NF > 60000 && $NF<90000' 将查看最后一个单词$NF,并检查它是否大于 60000 且(&&部分)90000。

答案3

grep -P '\b[6-8]\d{4}\s*$' ex3

相关内容