加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Unix Command Awk:查找文件中最长的字符串

发布时间:2020-12-16 01:50:10 所属栏目:安全 来源:网络整理
导读:我知道这可能是一个老问题,许多人已经解决了这个问题;但是,我的版本需要一点点扭曲. 所以我有一个文件,我称之为任务.对于这里的简单性,它只有4个条目: John Christina Christine Tom 现在,我想使用awk获取此文件中最长的名称,我希望它能同时返回Christina和
我知道这可能是一个老问题,许多人已经解决了这个问题;但是,我的版本需要一点点扭曲.

所以我有一个文件,我称之为任务.对于这里的简单性,它只有4个条目:

John

Christina

Christine

Tom

现在,我想使用awk获取此文件中最长的名称,我希望它能同时返回Christina和Christine.

这是我到目前为止:

<quest awk '{ if(length>x) {x =length; y=$0} } END {print y}'

它将回归克里斯蒂娜.我认为只用一行就可以完成,但我遇到了一些麻烦,想出一个聪明的方法来做到这一点.如果你能提供帮助我感激不尽!当然,我更喜欢单行.

解决方法

您可以使用以下内容:

$awk '{cur=length($0)} FNR==NR{max=(cur>max?cur:max); next} cur==max' file file
Christina
Christine

它使用语法awk’…’文件文件循环文件两次:

>第一次获得最大值 – 并将其存储在max变量中.这是FNR == NR {}块,以下一个停止处理当前行结束.更多信息在Idiomatic awk.
>第二次打印那些长度最大的行.

注意使用max =(cur> max?cur:max来设置最大值.它是一个三元运算符,可以像这样读取:设置最大检查,如果cur> max.如果这是真的,max = length($0 );否则,max = max.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读