首页 > 解决方案 > 如何在perl中grep方括号

问题描述

我正在尝试使用 perl 在文件中 grep [0](包括方括号),我尝试了以下代码

my @output = `grep \"\[0\]\" log `;

但不是返回 [0],而是在匹配 0 的地方给出输出

标签: perl

解决方案


您的问题是您需要转义[and]两次,因为[ ... ]在正则表达式中有特殊含义(它定义了一个字符类)。

#!/usr/bin/perl

use strict;
use warnings;

my @output = `grep "\\[0\\]" log `;

print for @output;

但是你真的不需要使用外部grep命令。Perl 擅长文本处理。

#!/usr/bin/perl

use strict;
use warnings;

while (<>) {
  print if /\[0\]/;
}

我的解决方案从名称作为程序参数(或 from STDIN)的任何文件中读取。


推荐阅读