在我的bash脚本中,我有一个字符串及其前缀/后缀.我需要从原始字符串中删除前缀/后缀.
例如,假设我有以下值:
string="hello-world"
prefix="hell"
suffix="ld"
Run Code Online (Sandbox Code Playgroud)
我如何得到以下结果?
result="o-wor"
Run Code Online (Sandbox Code Playgroud) 鉴于以下shell脚本,有人会如此善良地解释grep -Po正则表达式吗?
#!/bin/bash
# Issue the request for a bearer token, json is returned
raw_json=`curl -s -X POST -d "username=name&password=secret&client_id=security-admin-console" http://localhost:8081/auth/realms/master/tokens/grants/access`
# Strip away all but the "access_token" field's value using a Python regular expression
bearerToken=`echo $raw_json | grep -Po '"'"access_token"'"\s*:\s*"\K([^"]*)'`
echo "The bearer token is:"
echo $bearerToken
Run Code Online (Sandbox Code Playgroud)
具体来说,我有兴趣了解正则表达式的各个部分
grep -Po '"'"access_token"'"\s*:\s*"\K([^"]*)'`
Run Code Online (Sandbox Code Playgroud)
以及它是如何工作的.为什么这么多报价呢?什么是"K"?我有一些grep正则表达式的经验,但这让我很困惑.
这是curl命令的实际输出,shell脚本(grep)按需运行,只返回"access_token"值的内容.
{ "的access_token": "fQmQKn-xatvflHPAaxCfrrVow3ynpw0sREho7__jZo2d0g1SwZV7Lf4C26CcweNLlb3wmKHHo63HRz35qRxJ7BXyiZwHgXokvDJj13yuOb6Sirg9z02n6fwGy8Iog30pUvffnDaVnUWHfVL-h_R4-OZNf-_YUK5RcL2DHt0zUXI.", "expires_in":60, "refresh_expires_in":1800, "refresh_token": "eyJhbGciOiJSUzI1NiJ9..WeiJOC1jQ52aKgnW8UN2Lv9rJ_yKZiOhijOYKLN2EEOkYF8rvRZsSKbTPFKTIUvjnwy2A7V_N-GhhJH4C-T7F5__QPNofSXbCNyvATj52jGLxk9V0Afvk-Z5QAWi55PJRTC0qteeMRcO2Frw-0KtKYe9o3UcGICJubxhZHsXBLA"," token_type ":" 承载", "id_token": "eyJhbGciOiJSUzI1NiJ9.eyJuYW1lIjoiIiwianRpIjoiMGIyMGI0ODctOTI4OS00YTFhLTgyNmMtM2NiOTg0MDJkMzVkIiwiZXhwIjoxNDQ2ODI4MDU5LCJuYmYiOjAsImlhdCI6MTQ0NjgyNzk5OIwouldhaveToBeNutsUiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhZG1pbiIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZX0.DmG8Lm4niL1djzNrLsZ2CrsB1ZzUPnR2Nm7IZnrwrmkXsrPxjl6pyXKCWSj6pbk2sgVI8NNFqrGIJmEJ7gkTZWm328VGGpJsmMuJBki0KbqBRKORGQSgkas_34rwzhcTE3Iki8h_YVs2vvNIx_eZSOvIzyEcP3IGHuBoxcR6W3E", "不先于政策":0, "会话状态": "62efc05c-1bf5-4f55-b749-5e0eff94155b"}
如果有人发现这篇文章,这就是我最终使用的内容:
if hash jq 2>/dev/null; then
# Use the …Run Code Online (Sandbox Code Playgroud)