awkを使用して一致するすべての文字列を印刷するには?

awkを使用して一致するすべての文字列を印刷するには?

私の入力は次のとおりです。

["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

質問が関係していても、awkpure(特にgrep)または以下を使用して同じ目標を達成するのがはるかに簡単であることに注意してください。grepsed

grep -o '\?[^=]*='

または

sed -n 's/.*\(\?[^=]*=\).*/\1/p'

おすすめ記事