Regex 使用sed通过正则表达式搜索和替换模式

Regex 使用sed通过正则表达式搜索和替换模式,regex,sed,Regex,Sed,试图替换文件中的所有内容,包括空格内的密码 password=xx%40%25PKz3L2jTa HTTP 密码=xx%40%25PKz3L2jTa HTTP 尝试使用来自的正则表达式执行以下sed命令 sed's/password=(.)+//g'$file 及 sed's/password=[^]+//g'$file 以上这些都不起作用。为什么?尝试使用-r参数: sed -r 's/password=[^ ]+/ /g' $file 标准的sed不理解“扩展”正则表达式,例如“+”。您有

试图替换文件中的所有内容,包括空格内的密码

password=xx%40%25PKz3L2jTa HTTP 密码=xx%40%25PKz3L2jTa HTTP 尝试使用来自的正则表达式执行以下sed命令

sed's/password=(.)+//g'$file 及

sed's/password=[^]+//g'$file
以上这些都不起作用。为什么?

尝试使用
-r
参数:

sed -r 's/password=[^ ]+/ /g' $file

标准的
sed
不理解“扩展”正则表达式,例如“+”。您有两种选择:

使用

sed -E 's/password=[^ ]+/ /g' $file
或者使用标准正则表达式

sed 's/password=[^ ]*/ /g' $file

我更喜欢第二个,因为它更便于携带,而且与第一个不同,它将使用空密码字段。

您必须退出+。试试这个:sed's/password=[^]\+//g'$file您可以使用
sed-E
来启用扩展模式,它支持+。这依赖于GNU
sed
-r
选项不是标准选项)。使用classic(POSIX)
sed
,您可以编写一个简单的变体:
sed的/password=[^][^]*//g'$file
。谢谢。它一直对我有用,所以我忘了它不是标准的。
sed -E 's/password=[^ ]+/ /g' $file
sed 's/password=[^ ]*/ /g' $file