使用以下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版本?
或者也许是匹配文件中最后一个单词(有或没有空格)的其他好方法
答案 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