在AppleScript中执行复杂的管道命令

时间:2012-03-19 22:56:44

标签: bash escaping applescript

我正在使用bash脚本进行一些json解析:

curl http://myurl.com/get.json | sed -e 's/[{}]/''/g' | awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' | grep '"key":' | sed 's/:/ /1' | awk -F" " '{ print $2 }' | tr -d "\""

现在我想把它带到AppleScript,但我对逃避有点困惑。 当我重新考虑所有"时,我得到了这个:

do shell script "curl http://myurl.com/get.json | sed -e 's/[{}]/''/g' | awk -v k=\"text\" '{n=split($0,a,\",\"); for (i=1; i<=n; i++) print a[i]}' | grep '\"key\":' | sed 's/:/ /1' | awk -F\" \" '{ print $2 }' | tr -d \"\"\""

它会返回错误:

sh: -c: line 0: unexpected EOF while looking for matching `"'
sh: -c: line 1: syntax error: unexpected end of file

我真的很感激这里的一些帮助!谢谢!

1 个答案:

答案 0 :(得分:1)

你很接近 - 逃脱角色也需要在最后一点进行转义:

do shell script "curl http://myurl.com/get.json | sed -e 's/[{}]/''/g' | awk -v k=\"text\" '{n=split($0,a,\",\"); for (i=1; i<=n; i++) print a[i]}' | grep '\"key\":' | sed 's/:/ /1' | awk -F\" \" '{ print $2 }' | tr -d \"\\\""

编辑:我认为我得到了所有这些,但看起来在最后一点可能需要额外的“。”