我有一个包含600个搜索和替换项的列表,需要将其作为sed脚本运行到一些文件中。问题是这些搜索项并不是正交的...但我认为可以通过按行长度排序来解决(即先找到最长的匹配项,然后在每个长度内按字母顺序排列)。因此,给出一个未排序的列表:
aaba
aa
ab
abba
bab
aba
我想要的是一个排序后的集合,例如:
abba
aaba
bab
aba
ab
aa
有没有一种方法,比如在行长度前添加并按字段排序来完成它?
额外加分的话 :-) !!! 搜索和替换实际上只是将 term 替换为 _term_ 我要使用的sed代码是 s/term/_term_/g 如何编写正则表达式以避免替换已经在 _ 对中的术语?
$a cmp $b
改为$b cmp $a
,因为他想要它以相反的顺序。 - Brad Gilbertperl -E'say for sort { length $b<=>length $a } grep chomp, <>' input
。 - Brad Gilbert