我的输入是这样的:
["https://www.tesing.com/watch/80239279"],
["https://www.testing.com/watch/80240715?source=35"],
["https://www.testing.com/watch/80242619?trackId=254015180&tctx=0%2C0%2Ce336905e-6b5c-4a93-ad18-57ae35b6eb08-583558810%2C29fea9da-2bf8-43b0-b26a-2da637154825_96118138X20XX1560732016031%2C29fea9da-2bf8-43b0-b26a-2da637154825_ROOT"],
["https://www.testing.com/watch/80242619?tctx=1%252C0%252C%252C%252C"],
所以我只想要提取物参数(例如:trackId、SourceId)
我的正则表达式是/[\?\\&]{1,2}\w+=/
。
文件.awk
BEGIN {}
{
match($0, /[\?\\&]{1,2}\w+=/){print substr($0, RSTART, RLENGTH)}
}
END {}
但它只打印一个匹配的字符串。
答案1
即使问题只是相关的,请注意,使用 pure (尤其是 grep) 或awk
来实现相同的目标要容易得多:grep
sed
grep -o '\?[^=]*='
或者
sed -n 's/.*\(\?[^=]*=\).*/\1/p'
答案2
使用以下命令进行测试,效果很好
awk -F "=" '{print $1}' filename |awk -F "?" '{print "?"$2}'| sed '/^\?$/d'
输出
?source=
?trackId=
?tctx=