Regex 使用sed通过正则表达式搜索和替换模式
试图替换文件中的所有内容,包括空格内的密码 password=xx%40%25PKz3L2jTa HTTP 密码=xx%40%25PKz3L2jTa HTTP 尝试使用来自的正则表达式执行以下sed命令 sed's/password=(.)+//g'$file 及 sed's/password=[^]+//g'$fileRegex 使用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不理解“扩展”正则表达式,例如“+”。您有
以上这些都不起作用。为什么?尝试使用
-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
来启用扩展模式,它支持+。这依赖于GNUsed
(-r
选项不是标准选项)。使用classic(POSIX)sed
,您可以编写一个简单的变体:sed的/password=[^][^]*//g'$file
。谢谢。它一直对我有用,所以我忘了它不是标准的。
sed -E 's/password=[^ ]+/ /g' $file
sed 's/password=[^ ]*/ /g' $file