如何用Perl单次提取Google Drive链接中的文件ID(避免两次处理)
一步提取Google Drive文件ID的Perl命令
当然可以一步完成!你现在分两次处理的方式完全可以合并成一个正则表达式操作,直接精准提取中间的文件ID。
这里有几种简洁的实现方式:
方式一:替换整个字符串为捕获的ID
用-pe参数配合正则捕获组,把整个URL替换成我们需要的ID部分:
URL="https://drive.google.com/file/d/j2903r293rj092j3r20/view?usp=sharing"; echo $URL | perl -pe 's!^https://drive.google.com/file/d/([^/]+)/.*$!$1!'
正则说明:
!作为正则分隔符(代替默认的/),避免了转义URL里的斜杠,让表达式更易读^https://drive.google.com/file/d/匹配URL的固定前缀([^/]+)捕获组,匹配所有非斜杠的字符(也就是文件ID,因为ID后紧跟/view)/.*$匹配从ID后的斜杠到字符串结尾的所有内容$1引用第一个捕获组的内容,也就是我们要提取的ID
方式二:直接匹配并打印ID
用-ne参数循环处理输入行,匹配到目标内容后直接打印:
URL="https://drive.google.com/file/d/j2903r293rj092j3r20/view?usp=sharing"; echo $URL | perl -ne '/https:\/\/drive\.google\.com\/file\/d\/([^\/]+)/ && print $1 . "\n"'
这种方式更直接:当正则匹配到URL中的ID部分时,就打印捕获到的内容。
两种方式都能一步完成提取,不用再分两次管道处理啦。
内容的提问来源于stack exchange,提问作者user321627
相关产品推荐
相关产品推荐

