Dyc*_*cey 4 regex sorting bash sed
我有一大堆(600多个)搜索和替换术语,我需要在某些文件上作为sed脚本运行.问题是搜索术语不是正交的...但我认为我可以通过按行长度排序来逃避它(即首先拉出最长的匹配,然后在每个长度内按字母顺序排出.所以给出了一组未完成的:
aaba
aa
ab
abba
bab
aba
Run Code Online (Sandbox Code Playgroud)
我想要的是一个排序集,如:
abba
aaba
bab
aba
ab
aa
Run Code Online (Sandbox Code Playgroud)
有没有办法通过预先说明行长度和按字段排序来做到这一点?
奖金标记:-) !!! 搜索和替换实际上只是用_term_替换术语的情况,我将要使用的sed代码是s/term/_term_/g我如何编写正则表达式以避免替换已经在_对中的术语?
mob*_*mob 10
您可以在一行Perl脚本中执行此操作:
perl -e 'print sort { length $b<=>length $a || $b cmp $a } <>' input
Run Code Online (Sandbox Code Playgroud)