从 shell 脚本执行 Perl 命令不会产生任何结果

从 shell 脚本执行 Perl 命令不会产生任何结果

我正在尝试从 shell 脚本执行以下命令: perl -pi -e 's/Ç/|/g' diff_new_old.dat 此命令执行时没有任何错误,但执行并未进行预期的替换。shell 似乎没有执行 perl 命令的问题,因为它 perl -pi -e 's/\n/\r\n/g' diff_new_old.dat运行正常。这看起来像是特殊字符替换的问题。

当我直接在 $ 提示符下执行相同的命令时,它会正常执行,并将文件中的所有 Ç 字符替换为 |。我想自动执行此过程,因此需要一种通过 shell 脚本完成此操作的方法。

我也尝试使用 sed 's/Ç/|/' 命令。但这会导致以下错误:sed: -e 表达式 #1, char 6: 未终止的 `s' 命令

请让我知道我可以做些什么来实现替代。

提前致谢。

答案1

您可能必须告诉 perl 该脚本包含 UTF-8 字符:

perl -Mutf8 -pi -e 's/Ç/|/g' diff_new_old.dat

http://perldoc.perl.org/utf8.html

相关内容