之前我尝试使用
sed
来完成此操作,但发现 perl
更适合多行查找和替换。简单的字符串工作正常,但当涉及到带有特殊字符的字符串时,它无法按预期工作。
我正在尝试更换:
COMPREHENSIVE_THEME_DIRS:
- ''
与:
COMPREHENSIVE_THEME_DIRS:
- '/edx/app/edxapp/edx-platform/themes'
- '/edx/src/ti-theme/edx-platform'
这是我当前的命令,它在终端上给我一个
quote>
,而不是查找和替换。
perl -0007 -i -pe 's/COMPREHENSIVE_THEME_DIRS:\n- \'\'/COMPREHENSIVE_THEME_DIRS:\n- \'\/edx\/app\/edxapp\/edx-platform\/themes\'\n- \'\/edx\/src\/ti-theme\/edx-platform\'/igs'
像这样:
perl -g -pe 's/COMPREHENSIVE_THEME_DIRS:\n- \047\047/COMPREHENSIVE_THEME_DIRS:\n- \047\/edx\/app\/edxapp\/edx-platform\/themes\047\n- \047\/edx\/src\/ti-theme\/edx-platform\047/igs' file
perl -g
与 perl -0777
相同,perl 版本 >= 5.36。
COMPREHENSIVE_THEME_DIRS:
- '/edx/app/edxapp/edx-platform/themes'
- '/edx/src/ti-theme/edx-platform'
检查
man ascii
是否有 \047