我找到了一个解决方案,用于从Mac OS X钥匙串项目中提取密码。它使用sed
从security
命令获取密码:了解sed示例
security 2>&1 >/dev/null find-generic-password -ga $USER | \
sed -En '/^password:/s,^password: "(.*)"$,\1,p'
的代码是由“sr105”评论here。 |
之前的部分评估为password: "secret"
。我试图弄清楚sed
命令是如何工作的。这里有一些想法:
我明白国旗-En
,但在这个例子中逗号是什么?在sed文档中,它表示逗号分隔地址范围,但有3个逗号。
第一个'地址'/^password: /
有尾部s
;在文档s
中仅提到了替换命令,如s/pattern/replacement/
。这里不是这种情况。
^password: "(.*)"$
部分看起来像正则表达式隔离secret
,但它没有分隔。
我可以理解打印出后引用\1
的最后部分,但是再次,那里的逗号是什么?
请注意,我对这个sed示例的替代方法不感兴趣。这只会是一个更大的bash脚本的一部分,它将在.htaccess文件中包含一些更多的sed解析,因此我很想知道它的语法,即使它是是晦涩难懂。
感谢您的帮助!
逗号是随机的分隔符,它们可能是别的。 ^,^密码:“(。*)”$,\ 1,p == s/^密码:“(。*)”$/\ 1/p' – Wrikken
刚才我刚才意识到。我应该回答我自己的问题吗? – Timm
现在不是已经有2个人为你做了这个工作,对它进行了更详细的解释;) – Wrikken