awk 引用程序文本

awk quoting program text

如果我运行:

awk '/-jar org.eclipse.osgi.jar --launcher.suppressE/ {print "-Dcom.abc.service.gw.enableValidation=false \"}1' rest_gw.sh >> new_gw.sh

该命令在 -jar org.eclipse.osgi.jar --launcher.suppressE

行上方插入一个新行
-Djava.security.properties=/var/vcap/packages/helpers/data.properties \
-Dcom.abc.service.gw.enableValidation=false \  <<<<<<<<<<<<<<<<<<<<<<<<<
-jar org.eclipse.osgi.jar --launcher.suppressErrors -consoleLog &

如果我运行下面的命令,它给出:awk: line 1: runaway string constant "-Dcom.abc. ...

bosh -d test-105 ssh service/0 -c 'sudo /usr/bin/awk "/-jar org.eclipse.osgi.jar --launcher.suppressErrors/ {print \"-Dcom.abc.service.gw.enableValidation=false \\"}1" /var/vcap/data/jobs/gw_rest/*/target/gw.sh >> /tmp/new_gw.sh'

尝试过:

bosh -d test-105 ssh service/0 -c 'sudo /usr/bin/awk '\'/-jar org.eclipse.osgi.jar --launcher.suppressErrors/ {print \"-Dcom.abc.service.gw.enableValidation=false \\"}1\' /var/vcap/data/jobs/gw_rest/*/target/gw.sh >> /tmp/new_gw.sh'

到目前为止运气不好。有人可以建议正确的方法吗?提亚!

编辑:

推荐的 sed 命令:

bosh -d test-105 ssh service/0 -c 'sudo sed '/-jar org.eclipse.osgi.jar --launcher.suppressE/i -Dcom.abc.service.gw.enableValidation=false \' /var/vcap/data/jobs/gw_rest/*/target/gw.sh >> /tmp/new_gw.sh'

unknown flag launcher.suppressE/i'

终于成功了:

bosh -d test-105 ssh service/0 -c "sudo sed '/-jar org.eclipse.osgi.jar --launcher.suppressErrors -consoleLog/i -Dcom.abc.service.gw.enableValidation=false \\' /var/vcap/data/jobs/gw_rest/*/target/gw.sh >> /tmp/new_gw.sh"

我强烈建议使用 sed 命令将您的行插入为:

sed  '/-jar org.eclipse.osgi.jar --launcher.suppressE/i -Dcom.abc.service.gw.enableValidation=false \' rest_gw.sh >> new_gw.sh

它更简洁。