我找到了一個解決方案,用於從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