- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:正規表現について(sed))
正規表現について(sed)の要約
このQ&Aのポイント
- URLから特定のパラメータ以外を除去する正規表現について質問があります。
- sedコマンドの表現で、特定のパラメータを除去することはできましたが、他の方法を試しましたがうまくいきませんでした。
- Linuxのsedコマンドに詳しい方からのアドバイスをお願いできればと思います。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
正規表現で1度に置き換えるのは難しいと思います。次のスクリプトでは、末尾に半角スペースを付け加えて、その後ろに残したいパラメータを集めて、最後に先頭からスペースまでを削除しています。 $ echo 'http://xxx.jsp/?rank=6&uid=aaaabfadfddfd&k=open&serial=12345&pr=ABC' | sed "s/$/ /;:loop; s/\([^ ]*\)\([?&]\(k\|a\|pr\)=[0-9a-zA-Z%_-]\+\)\([^ ]*\) \([^ ]*\)/\1\4 \2\5/; /[?&]\(k\|a\|pr\)=[^ ]\+ /b loop; s/.* //" &k=open&pr=ABC と出力 上のスクリプトを行単位で書き直すと次のようになります。 s/$/ / :loop s/\([^ ]*\)\([?&]\(k\|a\|pr\)=[0-9a-zA-Z%_-]\+\)\([^ ]*\) \([^ ]*\)/\1\4 \2\5/ /[?&]\(k\|a\|pr\)=[^ ]\+ /b loop s/.* //
お礼
loopもできるんですね。 こんな書き方できるなんて知りませんでした。 勉強になりました。ありがとうございました。