以下のように、ファイルの文字列/ URLのリストを検討してください。
$ cat urls.txt
https://example.com/index.php?param1=value1¶m2=value2¶m3=value3
https://example2.com/home.php?param1=value1¶m2=value2
以下のようにパラメータ値を削除する必要があります。
$ cat replaced.txt
https://example.com/index.php?param1=¶m2=¶m3=
https://example2.com/home.php?param1=¶m2=
どうすればいいですか?私は以下を使用していくつかのバリエーションを試しました。sed最終的に間のすべてを置き換えます。=そして&次のように
$ sed -r 's/(=)(.*)(&)/\1\3/g' urls.txt
https://example.com/index.php?param1=¶m3=value3
https://example2.com/home.php?param1=¶m2=value2
ありがとう
答え1
試してみてください
sed -r 's/(=)([^=]*)(&)/\1\3/g;s/(=)([^=]*)$/\1/'
どこ
s/(=)([^=]*)(&)/\1\3/g
最初のパターンで交換を実行しparam=value
ますが、停止します=
(貪欲な一致を避けるため)。s/(=)([^=]*)$/\1/
最後のパターンを置き換える
答え2
次のコマンドを試してください
sed -e "s/[a-z]*[0-9]\&/\&/g" -e "s/[a-z]*[0-9]$//g" filename
出力
https://example.com/index.php?param1=¶m2=¶m3=
https://example2.com/home.php?param1=¶m2