我使用此命令删除脚本中某一行的多次出现,当我在命令提示符下运行它时,它工作正常。但是,当我在 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 中,我也不确定您引用的那行是否有效。所以我认为您确实需要扩展您的原始问题以推进这一进程。