perl +匹配文件中的最后一个单词+ one liner perl命令

时间:2014-02-18 08:42:14

标签: linux perl solaris ksh

使用以下Perl liner命令,我用来匹配文件中的LAST_WORD

  • 最后一个字可以是空格或没有空格

    perl -ne "print if /LAST_WORD\s*$/" file
    

Perl命令在Linux和Solaris上使用Perl版本正常工作 - v5.8.7

但是当我在Solaris 9机器上的Perl 5.6.1版上运行它时

我收到以下错误

   perl -ne "print if /LAST_WORD\s*$/" file
   Illegal variable name.

请在我的语法中建议需要修复的内容,以便Perl命令支持所有Perl版本?

或者也许是匹配文件中最后一个单词(有或没有空格)的其他好方法

2 个答案:

答案 0 :(得分:1)

尝试引用:

perl -ne "print if /LAST_WORD\s*\$/" file

这是比单引号更通用的解决方案。

我在Linux Perl 5.8+上确认它也可以在没有转义的情况下工作...... 现在无法检查Solaris,抱歉......但是我想问题来自于Solaris上shell中双引号逻辑中的不同变量分辨率,而不是Linux上的那个......

答案 1 :(得分:0)

它与Perl无关,而且与你的shell有关。

问题是$对于双引号文字中的shell是特殊的。你可以逃避它,但使用单引号更清晰。单引号文本的内容不变。

perl -ne 'print if /LAST_WORD\s*$/' file