Regex Windows中的Perl一行程序
我有一个程序,它将读取一个文件并删除每行的第一个字段,该字段用逗号分隔,并转储其余字段Regex Windows中的Perl一行程序,regex,windows,perl,command-line,Regex,Windows,Perl,Command Line,我有一个程序,它将读取一个文件并删除每行的第一个字段,该字段用逗号分隔,并转储其余字段 perl -wan -e 'for (@F) { if (/(aaa),(.*)/) {$text = $2; $text =~ s/$1// ; print "$text\n";}}' 其中aaa位于每行的第一个字段中。这在Linux中运行正常,但在Windows中会引发错误: 在-e第1行的EOF之前的任何位置都找不到字符串终止符“'”` 为什么它的行为会有所不同?在MS Windows中,单引号不像在
perl -wan -e 'for (@F) { if (/(aaa),(.*)/) {$text = $2; $text =~ s/$1// ; print "$text\n";}}'
其中aaa位于每行的第一个字段中。这在Linux中运行正常,但在Windows中会引发错误:
在-e第1行的EOF之前的任何位置都找不到字符串终止符“'”`
为什么它的行为会有所不同?在MS Windows中,单引号不像在Linux中那样工作。你必须切换到双引号
perl -wan -e "for (@F) { if (/(aaa),(.*)/) {$text = $2; $text =~ s/$1// ; print qq($text\n);}}"
我使用了
qq
来嵌套双引号。在微软Windows中,单引号在Linux中不起作用。你必须切换到双引号
perl -wan -e "for (@F) { if (/(aaa),(.*)/) {$text = $2; $text =~ s/$1// ; print qq($text\n);}}"
我使用了
qq
作为嵌套双引号。您可能希望使用双引号而不是单引号。这可能会给引用的文本“$text\n”带来问题,可以用perl替代引用qq{$text\n}
perl -wan -e "for (@F) { if (/(aaa),(.*)/) {$text = $2; $text =~ s/$1// ; print qq($text\n);}}"
perl -wane "for (@F) { if (/(aaa),(.*)/) {$text = $2; $text =~ s/$1//; print qq{$text\n}; }}"
您可能希望使用双引号而不是单引号。这可能会给引用的文本“$text\n”带来问题,可以用perl替代引用
qq{$text\n}
perl -wane "for (@F) { if (/(aaa),(.*)/) {$text = $2; $text =~ s/$1//; print qq{$text\n}; }}"
显然,perl有很多方法。但是在perl程序中,如果我使用“$text”,它可以正常工作,但在oneliner中不行。有什么具体的原因吗???@PDK是的,双QOUTE用于封装perl脚本,所以除非反斜杠,否则不能在脚本内部使用。显然,perl有很多方法。但是在perl程序中,如果我使用“$text”,它可以正常工作,但在oneliner中不行。有什么具体的原因吗???@PDK是的,双QOUTE用于封装perl脚本,所以除非反斜杠,否则不能在脚本内部使用。可能的重复可能的重复