我如何生成一个显示文件中最低数字的列表?
前任。
- 列表项 2476 Jackie Woodson :经理: :销售: :05/01/59:110000
- 列表项 2000 杰克·威尔逊 :董事: :会计: :04/19/55:80000
- 列表项 7700 Wilson Ali :executie: :accounts: :08/30/56:90000
列表项 3364 Bill Wilcocks :经理: :销售: :12/12/55:65000
列表项 4290 Neil O'bryan :执行: :账户: :05/01/59:100000
列表项 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