首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我有多个文件和不同版本的文件。我需要如何从每个文件中选择编号最高的版本。

我有多个文件和不同版本的文件。我需要如何从每个文件中选择编号最高的版本。
EN

Unix & Linux用户
提问于 2020-03-24 11:14:01
回答 2查看 166关注 0票数 -2

我有多个文件和不同版本的文件。我需要如何从每个文件中选择编号最高的版本。

例:

代码语言:javascript
复制
ac-1
ac-2
bc-1
bc-2

期望输出

代码语言:javascript
复制
 ac-2,bc-2
EN

回答 2

Unix & Linux用户

发布于 2020-03-24 15:30:30

您可以对文件名进行反向排序,然后选择每个文件名的第一个匹配项:

代码语言:javascript
复制
$ cat input                                                                                            
ac-1
ac-2
bc-1
bc-2

$ cat input | sort -r | awk -F '-' '!seen[$1]++' 
bc-2
ac-2

awk命令以'-‘作为分隔符,然后打印元素第一列(ac、ac、bc、bc)首先出现的每一行。当然,这是假定版本号总是在第一个'-‘之后开始的。

票数 0
EN

Unix & Linux用户

发布于 2020-03-25 02:07:53

使用GNUdatamash查找最大值的简短bash脚本:

代码语言:javascript
复制
#!/bin/bash
mapfile -t files < <(datamash -st'-' -g1 max 2 < "$1")
IFS=,
echo "${files[*]}"

用法:

代码语言:javascript
复制
$ ./example.sh input.txt
ac-2,bc-2
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/574604

复制
相关文章

相似问题

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