我有多个文件和不同版本的文件。我需要如何从每个文件中选择编号最高的版本。
例:
ac-1
ac-2
bc-1
bc-2期望输出
ac-2,bc-2发布于 2020-03-24 15:30:30
您可以对文件名进行反向排序,然后选择每个文件名的第一个匹配项:
$ cat input
ac-1
ac-2
bc-1
bc-2
$ cat input | sort -r | awk -F '-' '!seen[$1]++'
bc-2
ac-2awk命令以'-‘作为分隔符,然后打印元素第一列(ac、ac、bc、bc)首先出现的每一行。当然,这是假定版本号总是在第一个'-‘之后开始的。
发布于 2020-03-25 02:07:53
使用GNUdatamash查找最大值的简短bash脚本:
#!/bin/bash
mapfile -t files < <(datamash -st'-' -g1 max 2 < "$1")
IFS=,
echo "${files[*]}"用法:
$ ./example.sh input.txt
ac-2,bc-2https://unix.stackexchange.com/questions/574604
复制相似问题