正则表达式中的perl意外标记?

时间:2015-11-02 14:16:42

标签: regex perl pipe

我有一个unix进程吐出字符串,需要用引号括起来,&#39}。 Perl是我最喜欢的语言,所以我决定将perl与管道结合使用。可以通过cat(我认为)来模仿过程。我试过了:

cat lines.txt | perl -pe s/(\w+)/,\'$1\'/

这使syntax error near unexpected token '('符合现实生活中的错误 lines.txt看起来像:

A
B
C
D

出了什么问题?

2 个答案:

答案 0 :(得分:3)

合适的perl命令可以是:

perl -pe "s/(\w+)/,'\$1'/"

我们需要转义$以避免shell尝试解释$1

答案 1 :(得分:2)

该错误来自糟糕的逃避。当您打算使用grep时,您还使用了perl,并且在不需要的地方cat进行了调查。

perl -pe"s/(\w+)/,'\$1'/" lines.txt
   -or-
perl -pe's/(\w+)/,'\''$1'\''/' lines.txt