我有以下内容:
CreateWithUser
我需要用grep提取{
"auths": {
"https://index.docker.io/v1/": {
"auth": "TXlQYXNzd29yZA=="
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/17.12.0-ce (linux)"
}
}
并解码它
对于解码,我可以使用"TXlQYXNzd29yZA=="
(base64 -d
),但我不知道如何提取确切的线。
随着崇高,我几乎成功地抓住它:
echo TXlQYXNzd29yZA== | base64 -d
我得到(?!\"auth\": ) "(.*)"
,因为开头的空间而不完美
无论如何,我发现崇高的正则表达式与grep的正则表达式不同
我尝试使用这些网络工具:
http://www.ericagamet.com/wp-content/uploads/2016/04/Erica-Gamets-GREP-Cheat-Sheet.pdf
https://regex101.com/
但我没有成功。
我发现" TXlQYXNzd29yZA=="
给了我:
grep 'auth":'
似乎是一个好的开始。
我也试过 "auth": "TXlQYXNzd29yZA=="
或grep '(?!auth":)'
,没有任何反应。
答案 0 :(得分:5)
我建议使用真正的json解析器,如jq而不是grep。
$ jq -r '.auths | .[] | .auth' /path/to/file
答案 1 :(得分:2)
后面看
$ grep -oP '(?<="auth": ")[^"]+' file | base64 -d
MyPassword
或grep
不支持-P
选项
$ sed -nr 's/.*"auth": "([^"]+)"/\1/p' | base64 -d