jenkins 管道内的 awk 脚本

awk script inside jenkins pipeline

我正在尝试在 jenkinsfile 中执行以下脚本

awk 'NR==FNR{new=new [=10=] ORS; next} /^}]$/{printf "}],\n%s", new} 1' output2 ${WORKSPACE}/${REPO}/file1 >> output2

此脚本在 linux 命令提示符中运行良好,但在尝试 运行 inside jenkins file.I 时出错 file.I 在下面尝试

sh """
   awk 'NR==FNR{new=new [=11=] ORS; next} /^}]$/{printf "}],\n%s", new} 1' output2 ${WORKSPACE}/${REPO}/file1 >> output2
"""

但是语法错误

您需要注意转义单引号或双引号、反斜杠和美元符号。在这里,我已经逃脱了一切:

sh """
   awk \'NR==FNR{new=new $0 ORS; next} /^}]$/{printf \"}],\n%s\", new} 1\' output2 ${WORKSPACE}/${REPO}/file1 >> output2
"""

也许您实际上不想转义 ${WORKSPACE} 或 ${REPO},如果这些是您希望由 groovy 代替的管道环境变量,而不是 sh。也许您不需要转义三重“””多字符串中的单引号。但您肯定需要转义 \n.

中的双引号和反斜杠