我正在Alfred管道的groovy脚本中使用sed命令。
以下是我尝试执行的sed命令,但出现错误意外令牌'('
sh "echo \"sed -i s/LOBCODE IN ([^)]*/LOBCODE IN (${CCLobcode}/ig /bidata/testing/dma_if/sqlfile_if/incoming/${listvalue}_${database}/*.sql\" >> ./ssh_dma_script"
我基本上是用用户定义的($ ccLOBCODE)值替换任何密码为LOBCODE的东西。
并松开右括号。 ( ^) )
for ex : LOBCODE in (1002,1003,1009) will get replaced by LOBCODE in (1007). (assuming 1007 is going to be value passed in **ccLOBCODE)
感谢您的输入。
在这种情况下,RE具有动态部分($ CCLobcode,在问题中也拼写为ccLOBCODE),这将需要转义,否则它将不会被运行时值替换。
还请注意,REGEXO已被修改以替换括号后的所有字符,直到')',而不仅仅是第一个:([^)*]
。
sh "echo \"sed -i \"s/LOBCODE IN ([^)*]/LOBCODE IN (${CCLobcode}/ig\" /bidata/testing/dma_if/sqlfile_if/incoming/${listvalue}_${database}/.sql\" >> ./ssh_dma_script"
sh "echo \"sed ..."
而不是:
echo "sed ..."
此外,如果没有sh string
选项,-c
将不起作用。请您尝试以下操作:
echo "sed -i 's/LOBCODE IN ([^)]*/LOBCODE IN (${CCLobcode}/ig' '/bidata/testing/dma_if/sqlfile_if/incoming/${listvalue}_${database}/'*.sql" >> ./ssh_dma_script
请记住引用sed
命令。