这是我的文件中文件名的子集:
profile_10_1_1
profile_10_1_2
profile_1_1_1
Run Code Online (Sandbox Code Playgroud)
我正在尝试按升序对它们进行数字排序,即从 1 开始。我使用了以下命令
sort -n filename
Run Code Online (Sandbox Code Playgroud)
也试过这个:
sort -nk filename
Run Code Online (Sandbox Code Playgroud)
但是有 10 个的将始终位于列表的顶部。
如何编写命令来获得所需的输出:
profile_1_1_1
profile_1_1_2
....
profile_9_1_1
....
profile_10_1_1
Run Code Online (Sandbox Code Playgroud)
FreeBSD 和 GNUsort
有一个-V
选项。
sort -V < filename
Run Code Online (Sandbox Code Playgroud)
GNUls
有一个-v
选择。因此,如果这些文件确实存在,您可以执行以下操作:
xargs -d '\n' < filename ls -dv --
Run Code Online (Sandbox Code Playgroud)
zsh
有参数扩展标志来对数组进行数字排序:
printf '%s\n' ${(fno)"$(<filename)"}
Run Code Online (Sandbox Code Playgroud)
否则,便携地,你必须这样做:
sort -t_ -k1,1 -k2,2n -k3,3n -k4,4n -k5,5n filename
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1076 次 |
最近记录: |