首页 > 解决方案 > 从 URL 中提取 Google 驱动器文件夹 ID

问题描述

我只是想从一堆不同的谷歌驱动器 URL 中提取谷歌驱动器文件夹 ID

cat links.txt

https://drive.google.com/drive/mobile/folders/1mzr8lgf50p9z6p-7RyHn4XjnyKSvyyuE?usp=sharing

https://drive.google.com/open?id=1_7vwy0-y0BqvPOtG2Or4pvoChnZHrHAx

https://drive.google.com/folderview?id=1rOLhig0g3DdgB9YfvW8HiqRA6o6LxAFF

https://drive.google.com/file/d/1o2J_NwHS3l1-fM71HaDN-xxres1jHkb_/view?usp=drivesdk

https://drive.google.com/drive/folders/0AKzaqn_X7nxiUk9PVA

https://drive.google.com/drive/mobile/folders/0AKzaqn_X7nxiUk9PVA

https://drive.google.com/drive/mobile/folders/0AKzaqn_X7nxiUk9PVA/1re_-YAGfTuyE1Gt848vzTu4ZDC6j23sG/1Ye90fM5qYMYkXp4QMAcQftsJCFVHswWj/149W7xNROO33zaPvIYTNwvtVGAXFxCg_b?sort=13&direction=a

https://drive.google.com/drive/mobile/folders/1nY48t6MATb0XM-iEdeWzEs70qXW2N4Y9?sort=13&direction=a

https://drive.google.com/drive/folders/1M3Xp3xz44NS8QJO5XJT5DK55MohwN6tF?sort=13&direction=a

预期产出

1mzr8lgf50p9z6p-7RyHn4XjnyKSvyyuE

1_7vwy0-y0BqvPOtG2Or4pvoChnZHrHAx

1rOLhig0g3DdgB9YfvW8HiqRA6o6LxAFF

1o2J_NwHS3l1-fM71HaDN-xxres1jHkb_

0AKzaqn_X7nxiUk9PVA

0AKzaqn_X7nxiUk9PVA

149W7xNROO33zaPvIYTNwvtVGAXFxCg_b

1nY48t6MATb0XM-iEdeWzEs70qXW2N4Y9

1M3Xp3xz44NS8QJO5XJT5DK55MohwN6tF

经过一个小时的试验/错误,我确实想出了这个正则表达式 -([01A-Z])(?=[\w-]*[A-Za-z])[\w-]+

除了无法正确处理倒数第三个链接外,它似乎几乎可以正常工作。如果 URL 中有多个嵌套文件夹 ID,我需要输出中最里面的一个。有人可以帮我解决这个错误,如果可以以比我更有效的方式完成,可能会改进正则表达式

标签: regexawksedtext-processing

解决方案


你可以试试这个sed

sed -E 's~.*[/=]([01A-Z][-_[:alnum:]]+)([?/].*|$)~\1~' links.txt

1mzr8lgf50p9z6p-7RyHn4XjnyKSvyyuE
1_7vwy0-y0BqvPOtG2Or4pvoChnZHrHAx
1rOLhig0g3DdgB9YfvW8HiqRA6o6LxAFF
1o2J_NwHS3l1-fM71HaDN-xxres1jHkb_
0AKzaqn_X7nxiUk9PVA
0AKzaqn_X7nxiUk9PVA
149W7xNROO33zaPvIYTNwvtVGAXFxCg_b
1nY48t6MATb0XM-iEdeWzEs70qXW2N4Y9
1M3Xp3xz44NS8QJO5XJT5DK55MohwN6tF

推荐阅读