无法使用反引号字符执行所需的替换

时间:2018-08-30 04:03:55

标签: regex bash perl

我有一个带反引号的字符串:

this is `some` text

我想在反引号之前加一个反斜杠:

this is \`some\` text

我尝试过:

s/`/\`/g

但这导致原始文本:

this is `some` text

和:

s/`/\\`/g

但这会导致双反斜杠:

this is \\`some\\` text

我尝试了许多其他技巧,但没有运气。

3 个答案:

答案 0 :(得分:2)

您的第二个应该工作...

#!/usr/bin/perl
use strict;
use warnings;
use feature qw/say/;
my $string = "a string with `backticks` in it";
say "Before: $string";
$string =~ s/`/\\`/g;
say "After: $string";

产生

Before: a string with `backticks` in it
After: a string with \`backticks\` in it

答案 1 :(得分:0)

从没有数据::: Dumper 的文件中以单行方式使用它:

perl -pe 's/\`/\\`/g' file

输出

this is \`some\` text

答案 2 :(得分:0)

或与sed

一起使用
sed 's/[`]/\\\`/g' file

说明。

使用 character类 [...]保护您想要替换的字符,然后使用POSIX形式的转义"\\"逃避实际的'\'您希望包含在替代文本中。