带单引号的 Perl 单行代码
我使用 Perl 单行语句创建 SQL 语句,但无法包含单引号。
这就是我想要的:获取第一个字段并为其添加引号。
echo "a,b" | perl -F',' -lane 'print $F[0];'
'a'
我尝试了几种不同的方法,但对我来说没有用。
echo "a,b" | perl -F',' -lane 'print qq('$F[0]');' [0]
echo "a,b" | perl -F',' -lane 'print q('$F[0]');' [0]
这是另一个有趣的问题。
它使用 print 语句打印单引号,但是如果我为变量分配一个值并打印,它就不起作用。
perl -lwe "print q( i'am );"
i'am
perl -lwe "$b=q( didn't ); print $b"
我们如何在 Perl 语句中使用单引号和双引号?
I use a Perl one-liner to create an SQL statement, but I am not able to include single quotes.
This is what I want: Take the first field and add quotes to it.
echo "a,b" | perl -F',' -lane 'print $F[0];'
'a'
I tried a few different ways, but it didn't work for me.
echo "a,b" | perl -F',' -lane 'print qq('$F[0]');' [0]
echo "a,b" | perl -F',' -lane 'print q('$F[0]');' [0]
Here is another interesting issue.
It is printing a single quote with the print statement, but if I assign a value to the variable and print, it's not working.
perl -lwe "print q( i'am );"
i'am
perl -lwe "$b=q( didn't ); print $b"
How can we use single and double quotes in Perl one-liners?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您不能单独使用单引号。您需要使用
'\''
正确转义它们,这有效:You can't use single quotes alone. You need to escape them correctly using
'\''
This works:您需要了解您的 shell 如何处理引号。
我只使用
'
的 ASCII 值:q//
和qq//
运算符在单行代码中也很有用。You need to learn how your shell treats quotes.
I would just use the ASCII value for
'
:q//
andqq//
operators can also be useful in one-liners.使用具有八进制值的变量:
此外,对您的尝试 #1 进行轻微修改会起作用:
对外部集使用双引号并转义美元符号以防止 shell 解释它。
Use a variable with the octal value:
Also, a slight modification of your attempt #1 would work:
That uses double quotes for the outer set and escapes the dollar sign to prevent the shell from interpreting it.
将脚本放在双引号而不是单引号中将允许您在脚本内使用单引号,而无需转义或使用 ANSI 序列来表示单引号。这可能是最有效且易于阅读的解决方案。
Placing the script in double quotes rather than single quotes will allow you to use single quotes inside the script without having to escape or use ANSI sequences to represent the single quote. This is likely the most effective and easily-readable solution.