7

我一直在使用 Linux env,最近迁移到了 solaris。不幸的是,我的一个 bash 脚本需要grepPswitch [pcre support] 一起使用。由于 Solaris 不支持pcregrep 选项,我不得不找到另一个解决方案。而且pcregrep似乎有一个明显的循环错误和 sed -r选项不受支持!我希望在solaris上使用perlornawk能解决问题。

我还没有perl在我的脚本中使用过,也不知道它的语法和标志。

既然是pcre,我相信perl脚本编写者可以在几分钟内帮助我。它们应该匹配多行。

awk 就效率或解决方案而言,哪一个是更好的解决perl方案?

感谢您的回复。

4

2 回答 2

5

这些是您可能需要的一些转换grepperl

grep -P PATTERN FILE(s) ---> perl -nle 'print if m/PATTERN/' FILE(s)

grep -Po PATTERN FILE(s) ---> perl -nle 'print "$1\n" while m/(PATTERN)/g' FILE(s)

这是我对您要查找的内容的猜测,如果不可能的话grep -P

于 2012-08-02T13:17:54.623 回答
2

这是一个矮个子:

 grep -P /regex/ ====> perl -ne 'print if /regex/;'
  • -n文件的每一行作为输入。每一行都放入一个特殊的 perl 变量中,称为$_Perl 循环整个文件。
  • -e说 Perl 程序在命令行上,而不是向它传递一个文件。
  • 如果您没有指定Perl 命令打印出其他任何内容,则Perlprint命令会自动打印出其中的任何内容。$_
  • if /regex/正则表达式与$_变量中文件的任何行匹配。
于 2012-08-03T20:59:24.857 回答