【发布时间】:2022-01-20 16:31:44
【问题描述】:
我有这个查找脚本
Find $DATA/ -mindepth 1 -maxdepth 1 |\
perl -ane ' s:.*/((.+)\-[0-9]{8,10}[a-z]*([_\-].*)?):$2: && print; ' | \
sort -u > $loctmp/speakers_all.txt
任何shell脚本上帝可以为我解码吗? perl -ane 命令在做什么?
【问题讨论】:
-
至于“内联脚本”(
' '之间的所有内容)的作用,它运行一个正则表达式,匹配该行中的某个模式并将其替换为其中的一部分;所以它重写了这一行。然后将其打印出来并将所有这些行发送到排序。 -
请注意,这里没有任何东西可以证明特别使用 perl 是合理的。由于所有量词都是贪婪的,因此使用
sed -nE 's#.*/(.+)-[0-9]{8,10}[a-z]*([_-].*)?#\1#p'可以更快地获得相同的结果