Awk

移除請求參數值

  • September 2, 2020

考慮文件中的字元串/ URL 列表,如下所示

$ cat urls.txt
https://example.com/index.php?param1=value1&param2=value2&param3=value3
https://example2.com/home.php?param1=value1&param2=value2

我需要刪除參數值,如下所示

$ cat replaced.txt
https://example.com/index.php?param1=&param2=&param3=
https://example2.com/home.php?param1=&param2=

我怎樣才能做到這一點?我使用sed嘗試了幾種變體,最終替換了**=&**之間的所有內容,如下所示

$ sed -r 's/(=)(.*)(&)/\1\3/g' urls.txt
https://example.com/index.php?param1=&param3=value3
https://example2.com/home.php?param1=&param2=value2

謝謝

嘗試

sed -r 's/(=)([^=]*)(&)/\1\3/g;s/(=)([^=]*)$/\1/'

在哪裡

  • s/(=)([^=]*)(&)/\1\3/g對 firstsparam=value模式執行替換,但停止=(以避免貪婪匹配)
  • s/(=)([^=]*)$/\1/替換最後一個模式

嘗試使用以下命令

sed  -e "s/[a-z]*[0-9]\&/\&/g" -e "s/[a-z]*[0-9]$//g" filename

輸出

https://example.com/index.php?param1=&param2=&param3=
https://example2.com/home.php?param1=&param2

引用自:https://unix.stackexchange.com/questions/607540