Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Windows中的Perl一行程序_Regex_Windows_Perl_Command Line - Fatal编程技术网

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脚本,所以除非反斜杠,否则不能在脚本内部使用。可能的重复可能的重复