使用 perl 命令将多行文本替换为另一个多行文本

问题描述 投票:0回答:1

之前我尝试使用

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 yaml
1个回答
3
投票

像这样:

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

© www.soinside.com 2019 - 2024. All rights reserved.