SED:script.pl 第 19 行“;$'”附近有语法错误

SED:script.pl 第 19 行“;$'”附近有语法错误

我使用此命令删除脚本中某一行的多次出现,当我在命令提示符下运行它时,它工作正常。但是,当我在 perl 脚本中使用此行时,它会抛出错误 SED:script.pl 第 19 行“;$'”附近的语法错误。下面是我脚本中的行。我尝试转义 $,但这没有帮助

sed '/<\/data_item>/{N;/<\/data_item>$/{N;$'!'{s/\n//;D}}}' $WX

答案1

好的,假设您已经定义了自己的子程序sed,您的“Perl”语句分解如下:

sed                                           # A call to a subroutine called "sed"
                                              # that you've defined ?

'/<\/data_item>/{N;/<\/data_item>$/{N;$'   # A string surrounded by single quotes

!                        # an exclamation mark

'{s/\n//;D}}}'           # another string surrounded by single quotes

$WX;                     # a scalar variable called "WX"

您收到的实际语法错误是由于感叹号造成的。在 Perl 中,您不能像在 shell 中那样将字符放在字符串之外并让它们与周围的字符串连接起来。

即使在 shell 中,我也不确定您引用的那行是否有效。所以我认为您确实需要扩展您的原始问题以推进这一进程。

相关内容