首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Grep输出模式中获取最大指数

从Grep输出模式中获取最大指数
EN

Stack Overflow用户
提问于 2016-09-09 21:34:32
回答 3查看 142关注 0票数 0

我的同事今天在grep上遇到了一个有趣的问题。她正在制作一个bash脚本,它似乎是在使用curl从那里拉一个网页,并使用grep来拉锚。

她的示例输出结果如下:

代码语言:javascript
复制
    file-1    
    file-10
    file-2 
    file-20
    file-3
    file-4

这是预期的,因为grep排序,看到第一个数字,并将其按其“顺序”。

最后,她做了一个循环,从输出中获取最新的信息。但这让我很好奇。

在上面的示例中,如何在一行命令中获得file-20

。我试过sortawk。然而,无法工作:/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-09 21:37:33

你需要:

  • 使用数字排序:-n标志表示sort
  • 按数字列排序:使用-t指定列分隔符,使用-k指定列
  • 使用tail -n1获取最后一行

如下所示:

代码语言:javascript
复制
sort -n -t- -k2 input | tail -n1
票数 2
EN

Stack Overflow用户

发布于 2016-09-09 21:37:14

使用awk,您可以在单命令中执行此操作。

代码语言:javascript
复制
awk -F- '$2>max{max=$2; s=$0} END{print s}' file

file-20

我们用连字符分隔每一行,检查第二个字段。我们将变量max作为运行值来保持最大值,然后在$2中得到更高的值。每次设置max时,我们都会将全行存储在变量s中。在END部分中,我们只打印变量s

票数 1
EN

Stack Overflow用户

发布于 2016-09-09 21:39:06

您可以使用sort-分隔的第二个字段进行排序,并使用head -1获得第一个字段:

代码语言:javascript
复制
sort -t'-' -k2,2rn | head -1

示例:

代码语言:javascript
复制
% cat file.txt                        
file-1    
file-10
file-2 
file-20
file-3
file-4

% sort -t'-' -k2,2rn file.txt         
file-20
file-10
file-4
file-3
file-2 
file-1    

% sort -t'-' -k2,2rn file.txt | head -1
file-20
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39420034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档