我正在编写以下命令来解压缩makefile中的文本: -
@awk '/Exported Layer/,/Total Polygons/' out_compare.err | perl -lane '$el=$F[3] if(/Exported Layer/); print "$el: $f[3]" if (/Total Polygons/);' | cat
但它出现以下错误: -
无法修改标量赋值中的常量项目在-e第1行附近“]如果” 执行-e因编译错误而中止。
你们想提出一些建议吗? : - )
答案 0 :(得分:5)
Make无视命令中的shell引用,因此Perl代码段中的$
个字符被解释为make变量$e
和$F
。这些变量在makefile中不存在,并且被展开为空,导致您看到的Perl语法错误。
你需要像这样转义$
字符:
... perl -lane '$$el=$$F[3] if(/Exported Layer/); ...