我正在使用emacs 24.5并试图对这样的文件进行排序:
乍一看它似乎是按顺序排序,但只是从数字上来说是从左到右"从某种意义上说,订单是s-199
然后是s2
。
file '602036248001_4483709143001_s-1.ts'
file '602036248001_4483709143001_s-10.ts'
file '602036248001_4483709143001_s-100.ts'
file '602036248001_4483709143001_s-101.ts'
file '602036248001_4483709143001_s-102.ts'
file '602036248001_4483709143001_s-103.ts'
file '602036248001_4483709143001_s-104.ts'
file '602036248001_4483709143001_s-105.ts'
file '602036248001_4483709143001_s-106.ts'
file '602036248001_4483709143001_s-107.ts'
file '602036248001_4483709143001_s-108.ts'
我尝试在emacs中使用sort-regexp-fields
,使用"记录" regexp为file '602036248001_4483709143001_s-[^a-zA-Z]*.ts'
,使用"键" regexp为[^a-zA-Z' _-]\{1,3\}.ts
但是这些似乎突出了regexp-builder
中的匹配(顺便说一下,为什么它需要你用引号括起你的正则表达式"" ...?)
这似乎不起作用,我很难过。我还尝试使用排序列来标记区域和排序,这也不起作用。
答案 0 :(得分:2)
我会使用awk,而不是Emacs。尝试像
这样的东西awk -f sort.awk your-file.txt
其中sort.awk
是:
BEGIN {
FS = "[-.]"
}
{
key[NR] = $2+0
line[$2+0] = $0
}
END {
asort(key)
for (i = 1; i <= NR; i++) {
print line[key[i]]
}
}