我有一个unix进程吐出字符串,需要用引号括起来,
&#39}。 Perl是我最喜欢的语言,所以我决定将perl与管道结合使用。可以通过cat
(我认为)来模仿过程。我试过了:
cat lines.txt | perl -pe s/(\w+)/,\'$1\'/
这使syntax error near unexpected token '('
符合现实生活中的错误
lines.txt看起来像:
A
B
C
D
出了什么问题?
答案 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