我正在尝试制定一种Linux单一代码,以仅列出与目录中文件的早期版本重复的文件。例如:]]filenames:
foo-bar-foo-1.3.42.jar
foo-bar-foo-1.2.21.jar
foo-2.3-foo-bar-3.1.2.jar
foo-2.3-foo-bar-3.2.4.jar
bar-foo-1.24.jar
bar-foo-2.0.jar
foobar-foobar-3.4.1.jar
barfoo-barfoo-1.2.1.jar
expected output:
foo-bar-foo-1.2.21.jar
foo-2.3-bar-3.1.2.jar
bar-foo-1.24.jar
ls -vr *.jar | awk -F-[0-9]+.[0-9]+.[0-9]+ '$1 == name{system ("ls \""$0"\"")}{name=$1}'
但是它错过了版本中只有两个数字的那些。
并且使用它捕获诸如foo-2.3-foo-bar-3.1.2.jar这样的文件:
ls -vr *.jar | awk -F-[0-9]+.[0-9]+ '$1 == name{system ("ls \""$0"\"")}{name=$1}'
我还可以使用gsub来获取一个变量,该变量包含除版本号以外的所有内容,但是我无法弄清楚如何使用它最终获得预期的结果。
ls -vr *.jar | awk -F- '{gsub("-"$NF,"",$x)}{print $x}'
如果有更好的解决方案,我很乐意不使用awk(我对此并不十分熟悉)。我也在用sed进行bash的RHEL开发。但是,它必须是单线的,可以直接在命令行上使用。
我正在尝试制定一种Linux单一代码,以仅列出与目录中文件的早期版本重复的文件。例如:文件名:foo-bar-foo-1.3.42.jar foo-bar-foo-1.2.21.jar foo-2.3-foo -...