如何在Perl中使用grep匹配以空格结尾的字符串?

时间:2016-06-23 16:58:10

标签: perl grep

我想在Perl脚本中调用grep,如下所示:

my $line = `grep "^$name\b" $inputFile`;

当我在终端中运行实际的grep命令时,它会返回预期的内容,但是当我在我的脚本中包含此行时,不会返回任何内容。

如果我将\b替换为\s,则会在test.pl第50行通过"无法识别的转义符进行投诉。"

我已经查看了how to use grep to match with either whitespace or newline,但它没有具体说明为什么我的脚本没有返回预期的内容。

如何在Perl中的命令中正确包含\b\s

2 个答案:

答案 0 :(得分:2)

你必须逃避'\'使用grep \\ b

答案 1 :(得分:1)

你不使用反引号 - 你用Perl

写它
my $name = 'xyz';

my $line;

while ( <> ) {
    next unless /^$name\b/;
    $line = $_;
    last;
}

如果已知测试的背景,那么这可能不那么笨拙。如果您希望通过

传递正则表达式元字符,则可能需要转义$name的内容