鉴于以下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) 我有一个奇怪的问题,至少有一个我从未遇到过的问题.我有一个前提条件,客户有简单的正则表达式与标签相关联.标签是他们关心的.我想要做的是创建一个列表,列出所有可能匹配这些正则表达式的数字.当列表超出某个阈值时,我会有逻辑警告我.
以下是正则表达式的示例: 34.25.14.(227|228|229|230|243|244|245|246)
让我们说这些ip与ACME有关.在用户选择ACME(在我们的UI中)的幕后,我填写了一个包含所有这些可能数字的过滤器对象,并将它们作为OR查询提交给高度专业化的Vertica数据库.
我无法确定从所述正则表达式创建数字列表的优雅方式.
另一方面,产品的另一部分中的java代码使用这些正则表达式通过使用java Pattern.compile()来显示ACME,这意味着客户'可以'创建复杂的正则表达式.到目前为止,我只看到它们,使用如上所示的简单方法.
是否有一种方法可以生成基于正则表达式的列表?
谢谢你的时间.
日食:
当显示方法列表(ctrl-space)时,是否有办法让该类中的方法具有粗体名称?Netbeans已经或者至少有一个功能可以加粗该类中找到的方法的名称,而继承的方法仍然是普通文本.
这使得很容易知道您正在编辑的类中有哪些方法.
有没有办法在最新版本的Eclipse中执行此操作?
谢谢.
我厌倦了将JMeter的"响应数据"选项卡中的JSON文本复制到notepad ++中,并使用JSON Viewer插件使JSON文本可读.
是否有JMeter的插件默认执行此操作?
我们有基于Web的表单登录身份验证和j_securtiy_check工作.我们想通过程序化登录身份验证来更改它.让servlet验证传递给它的用户名和密码的正确方法是什么?servlet显然没有受到保护.
我们一直在试验这个server.xml Realm:
<Realm className="org.apache.catalina.realm.DataSourceRealm"
dataSourceName="UserDatabase"
userTable="app_user" userNameCol="login_name" userCredCol="password_value"
userRoleTable="user_perm" roleNameCol="permission_name"
allRolesMode="authOnly" digest="MD5"
/>
Run Code Online (Sandbox Code Playgroud)
原因是我们有一个java webstart客户端,它将登录信息发送到不受保护的loginServlet.此servlet当前针对JOSSO单点登录服务进行身份验证,但我希望将其删除并对初学者使用简单的tomcat7身份验证.然后最终迁移到OpenAM.如果我可以以编程方式生成JSSESSIONIDSSO值并将其填充到cookie中.
这是我发现的一些代码.这是调用身份验证的正确方法吗?
ApplicationContextFacade acf = (ApplicationContextFacade) this.getServletContext();
Field privateField = ApplicationContextFacade.class.getDeclaredField("context");
privateField.setAccessible(true);
ApplicationContext appContext = (ApplicationContext) privateField.get(acf);
Field privateField2 = ApplicationContext.class.getDeclaredField("context");
privateField2.setAccessible(true);
StandardContext stdContext = (StandardContext) privateField2.get(appContext);
Realm realm = stdContext.getRealm();
Principal principal = realm.authenticate(loginBean.getUsername(), loginBean.getPassword());
if (principal == null)
{
return 0;
}
GenericPrincipal genericPrincipal = (GenericPrincipal) principal;
System.out.println ("genericPrincipal=" + genericPrincipal.toString());
Run Code Online (Sandbox Code Playgroud) authentication tomcat servlets j-security-check programmatically-created
我需要将字段的最终大小限制为2048.我可以使用:
ACTION_PARAMETER=substr($2,1,2048);
Run Code Online (Sandbox Code Playgroud)
但有更好的方法吗?