考虑文件中的字符串/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