sed (v4.2.1) 或 awk 解决正则表达式替换问题

sed (v4.2.1) or awk to solve a regex substition

https://regex101.com/r/t1Etzx/1/ 正在执行正则表达式替换。 在 bash:

上使用 sed 4.2.1
echo "text curl -u a12345:ypB7HuW9u5yB'_'https://mycompany.com/api/healthcheck"|sed -r 's/(a\d+|A\d+|scl[^:]+):([^\']+)(\'|_)/:xxxxx/g'

echo "text curl -u a12345:ypB7HuW9u5yB'_'https://mycompany.com/api/healthcheck"|sed -E 's/(a\d+|A\d+|scl[^:]+):([^\']+)(\'|_)/:xxxxx/g'

给我

bash: syntax error near unexpected token `)'

也欢迎使用 awk 解决方案。

如评论中所述,\d 不起作用,因此我将其替换为 [0-9]。 还用 [\'_] 替换了 (\'|_),因为那也不起作用。 至于bash: syntax error near unexpected token ')',把单引号换成双引号,因为'\''不行,因为单引号里的\是字面意思。 所以这似乎有效:

sed -E "s/(a[0-9]+|A[0-9]+|scl[^:]+):([^\'_]+)([\'_])/:xxxxx/g"