bash按字母顺序排序字符串列表

Sam*_*nck 7 sorting bash

我有一个文件列表,其中包含我需要排序的版本号

/this/is/a/file/path/product-2.0/file/name/7
/this/is/a/file/path/product-2.0/file/name/10
/this/is/a/file/path/product-2.0/file/name/12
/this/is/a/file/path/product-2.0/file/name/13
/this/is/a/file/path/product-2.0/file/name/6
/this/is/a/file/path/product-2.0/file/name/8
/this/is/a/file/path/product-2.0/file/name/9
Run Code Online (Sandbox Code Playgroud)

当我通过grep管道时它就像这样:

echo $files | sort -n
/this/is/a/file/path/product-2.0/file/name/10
/this/is/a/file/path/product-2.0/file/name/12
/this/is/a/file/path/product-2.0/file/name/13
/this/is/a/file/path/product-2.0/file/name/6
/this/is/a/file/path/product-2.0/file/name/7
/this/is/a/file/path/product-2.0/file/name/8
/this/is/a/file/path/product-2.0/file/name/9
Run Code Online (Sandbox Code Playgroud)

我认为-n被文件名中的第一个数字搞糊涂了.

我怎样才能用最后一个数字对它进行数字排序

nit*_*tin 17

Kaizen ~/so_test $ cat ztestfile1 | sort -t'/' -n -k10
/this/is/a/file/path/product-2.0/file/name/6
/this/is/a/file/path/product-2.0/file/name/7
/this/is/a/file/path/product-2.0/file/name/8
/this/is/a/file/path/product-2.0/file/name/9
/this/is/a/file/path/product-2.0/file/name/10
/this/is/a/file/path/product-2.0/file/name/12
/this/is/a/file/path/product-2.0/file/name/13
Run Code Online (Sandbox Code Playgroud)

这有帮助吗?

替代方式即独立于位置.....

 Kaizen ~/so_test  $ cat ztestfile1 | sort -V
 /this/is/a/file/path/product-2.0/file/name/6
 /this/is/a/file/path/product-2.0/file/name/7
 /this/is/a/file/path/product-2.0/file/name/8
 /this/is/a/file/path/product-2.0/file/name/9
 /this/is/a/file/path/product-2.0/file/name/10
 /this/is/a/file/path/product-2.0/file/name/12
 /this/is/a/file/path/product-2.0/file/name/13
Run Code Online (Sandbox Code Playgroud)

请注意其排序中的-V(大写)选项,该选项查看字符串中的数字差异以进行排序.....如版本号.

手册页文字::

   -V, --version-sort
          natural sort of (version) numbers within text
Run Code Online (Sandbox Code Playgroud)


mic*_*has 5

您可以/用作列分隔符:

sort -n -t/ -k 10
Run Code Online (Sandbox Code Playgroud)