在2.8版本的Dropbox中,你的dropbox文件夹的路径可以在文件〜/ .dropbox / info.json中找到
在我的情况下,我正在寻找我的个人路径,而不是业务路径,这不在典型的Dropbox位置〜/ Dropbox中,而是在单独的卷上。
我的〜/ .dropbox / info.json:
{" business":{" path":" / Users / ChristopherA / ReOrient Media"," host":123456789}, " personal":{" path":" / Volumes / Cloud / Dropbox"," host":123456789}}
我尝试过使用grep / awk,但是不能非常可靠地获取路径/ Volumes / Cloud / Dropbox,因为可能只有一个第一级条目(即没有业务保管箱),并且订单可能与其他用户不同(即我不能总是依赖于最后一个用户
有些人建议使用jsawk,但我无法弄清楚如何使其工作,而且我不喜欢依赖,因为这个脚本将在多台计算机上使用。
想法?
- 克里斯托弗艾伦
答案 0 :(得分:1)
使用json特定工具的解决方案将更加强大。
sed
仅使用sed
,并假设您的json数据位于名为json
的文件中,请尝试:
$ sed -n 's/.*"personal":[^}]*"path": "\([^"]*\)",.*/\1\n/p' json
/Volumes/Cloud/Dropbox
您的样本json数据全部在一行上。如果情况并非如此,那么最好在将新行传递给sed
之前将其删除:
$ tr '\n' ' ' <json | sed -n 's/.*"personal":[^}]*"path": "\([^"]*\)",.*/\1\n/p'
/Volumes/Cloud/Dropbox
awk
$ awk -F'"' -v RS='"personal"[^}]*path":' 'NR==2 {print $2}' json
/Volumes/Cloud/Dropbox
以上使用记录分隔符的正则表达式。 GNU awk
支持这一点。其他人可能会也可能不会。
来自Christopher Allen,以下是在Mac上的作品:
tr '\n' ' ' <json | sed -n 's/.*"personal":[^}]*"path": "([^"]*)",.*/\1/p
bash
#!/bin/bash
data=$(cat json)
data=${data#*\"personal\":}
data=${data#*path\":}
data=${data#*\"}
data=${data%%\"*}
echo "$data"