我正在使用 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
,“记录”正则表达式为 file '602036248001_4483709143001_s-[^a-zA-Z]*.ts'
并将“key”正则表达式设置为 [^a-zA-Z' _-]\{1,3\}.ts
但是这些似乎突出显示了 regexp-builder
中的匹配项(顺便说一句,为什么它要求您将正则表达式用引号“”括起来......?)
这似乎不起作用,我很困惑。我还尝试使用排序列来标记区域并排序,但这也不起作用。
最佳答案
我会使用 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]]
}
}
关于regex - Emacs 排序正则表达式字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38078751/