这是我未能掌握的一般主题的具体示例。
多年来,我一直使用 regex 和 sed 递归地查找/替换目录中所有文件中出现的所有字符串,使用如下所示:
#FIND $GLOBALS['timechecks'] and REPLACE with completely_different_string
shopt -s globstar dotglob;
for file in /var/www/**/*; do
if [[ -f $file ]] && [[ -w $file ]]; then
sed -i -- 's/\$GLOBALS\['\''timechecks'\''\]/completely_different_string/g' "$file"
fi
done
Run Code Online (Sandbox Code Playgroud)
问题是,在我不知道的情况下,在 bash 中使用 Regex 有一些基本的东西。结果,我无法找出特定示例的解决方案。
目标字符串我被卡住的地方
$GLOBALS['timechecks']=addTimeCheck_sparky($GLOBALS['timechecks'], number_format(microtime(true),6,'.',''), __LINE__, basename(__FILE__));
Run Code Online (Sandbox Code Playgroud)
正则表达式我想出了不工作
这只是我的脚本中的 sed 行以及我想出的搜索正则表达式,但无济于事。
\$GLOBALS\['\''timechecks'\''\]=addTimeCheck_sparky[(]$GLOBALS\['\''timechecks'\''\][,][ ]number_format[(]microtime[(]true[)][,]6[,]'\''\.'\''[,]'\'''\''[)][,][ ]__LINE__[],[ ]basename[(]__FILE__[)][)][;]
Run Code Online (Sandbox Code Playgroud)
正则表达式调试器
我在这个例子中使用了一个正则表达式调试器,它显示了正则表达式找到我的目标字符串,但它对我不起作用。调试器位于此链接。这是它显示的查找我的目标字符串的正则表达式:
\$GLOBALS\['timechecks\'\]=addTimeCheck_sparky\(\$GLOBALS\[\'timechecks\'\], number_format\(microtime\(true\),6,\'\.\',''\), __LINE__, basename\(__FILE__\)\)
Run Code Online (Sandbox Code Playgroud)
正则表达式调试器的输出问题:
首先,我在 de 中尝试了我的正则表达式
我认为我对将有效的正则表达式从调试器转换为在 …