如何从 Bash 按数字对包含共同前缀和后缀的字符串进行排序?
- 2024-11-01 08:41:00
- admin 原创
- 38
问题描述:
以下是文件列表:
some.string_100_with_numbers.in-it.txt
some.string_101_with_numbers.in-it.txt
some.string_102_with_numbers.in-it.txt
some.string_23_with_numbers.in-it.txt
some.string_24_with_numbers.in-it.txt
some.string_25_with_numbers.in-it.txt
现在我想按数字排序。从 23 开始,到 102 结束。
我已经尝试过,-n
但对这些混乱的字符串没有帮助。-g
`-t`
我可以使用选项来忽略数字的前导字符串吗?还是我必须聪明一点并使用脚本?
解决方案 1:
使用ls -lv
从手册页中:
-v natural sort of (version) numbers within text
解决方案 2:
请尝试以下操作:
sort -t '_' -k 2n
-t '_'
(将分隔符设置为下划线字符)-k 2n
(按第二列按数字顺序排序)
演示。
解决方案 3:
如果可用,只需使用sort -V
。这是版本号的排序,但作为“自然排序”选项效果很好。
$ ff=$( echo some.string_{100,101,102,23,24,25}_with_numbers.in-it.txt )
未经排序:
$ for f in $ff ; do echo $f ; done
some.string_100_with_numbers.in-it.txt
some.string_101_with_numbers.in-it.txt
some.string_102_with_numbers.in-it.txt
some.string_23_with_numbers.in-it.txt
some.string_24_with_numbers.in-it.txt
some.string_25_with_numbers.in-it.txt
使用 sort -V:
$ for f in $ff ; do echo $f ; done | sort -V
some.string_23_with_numbers.in-it.txt
some.string_24_with_numbers.in-it.txt
some.string_25_with_numbers.in-it.txt
some.string_100_with_numbers.in-it.txt
some.string_101_with_numbers.in-it.txt
some.string_102_with_numbers.in-it.txt
解决方案 4:
在一般情况下,尝试Schwartzian 变换。
简而言之,将数字分解到其自己的字段中,对其进行排序,然后丢弃添加的字段。
# In many shells, use ctrl-v tab to insert a literal tab after the first
sed 's/^([^0-9]*)([0-9][0-9]*)/ /' file |
sort -n |
cut -f2-
如果输入没有明显的分隔符,这种方法很有效,例如以下输入。
abc1
abc10
abc2
您希望将最后一行排序在第一行之后。
解决方案 5:
不是直接的,但您可以重命名文件,移动数字部分(根据需要添加额外的填充零)作为前缀。
例如:1.txt、23.txt、2.txt 重命名为 01.txt、23.txt、02.txt
现在 ls 默认输出是数字顺序 01.txt 02.txt 23.txt
一个简单的 Python 脚本可能会对你有所帮助。如果你愿意,你甚至可以使用正则表达式一次性完成。
import glob
files = glob.glob('*[0-9]*.py')
print(files)
import os
for f in files:
# 64.smallest_word_window.py
parts = f.split('_')
number = str('%04d' % (int(parts[0])))+'_'
del parts[0]
new_parts = number + '_'.join( parts )
print(f'{new_parts}')
os.rename(f, new_parts)
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD