从 URL 列表中提取参数

从 URL 列表中提取参数

问题:

从 URL 列表中提取所有参数

一个链接,例如,

https://www.google.com/search?q=grep+urls+from+a+file&rlz=1C5CHFA_enIL1008IL1008&oq=grep+urls+from+a+file

我尝试过的:

Grep 任何以 开头?和结尾的文本,或者以或空字符串=开头&和结尾的文本。&

期望的结果:

q

rlz

oq

答案1

您可以使用 grep 和以下--perl-regexp选项来执行此操作:

grep -Po '(?<=(\?|&))[^&]*(?==)'
  • (?<=(\?|&))?具有或&之前的字符串
  • [^&]*任何字符,但&
  • (?==)=后面有一个字符串

答案2

假设您的 URL 位于名为 的文件中file

sed -e 's/[^?]*[?]//' -e 's/=[^&]*//g' -e 'y/&/\n/' file

首先删除第一个问号之前的 URL 部分,包括问号本身。

第一次替换后,示例 URL 剩下的内容是

q=grep+urls+from+a+file&rlz=1C5CHFA_enIL1008IL1008&oq=grep+urls+from+a+file

第二次替换删除所有参数值,保留限制&字符。它删除所有以 a 开头=且由非&- 字符组成的字符串。根据您的示例,这会生成以下内容:

q&rlz&oq

最终表达式将每个字符替换&为文字换行符:

q
rlz
oq

相关内容