为什么 grep 不从安全实用程序的输出中提取?回声作品的可比提取
Why does grep not extract from security utility's output? Comparable extraction from echo works
在 OS X 中,有一个名为 security
的命令行实用程序,用于访问钥匙串。它可以 return 钥匙串中条目的密码,这就是我正在尝试做的。当我 运行 security find-internet-password -ga an_entry | grep "password"
时,我得到以下输出,正如预期的那样:
password: "apassword123"
我想提取引号之间的文字。 grep
,特别是 pcregrep
,应该有效但无效:
echo 'password: "apassword123"' | pcregrep -o '^password:\s"(?!_)\K[^"]+'
Returns:
apassword123
符合预期,但是:
security find-internet-password -ga anentry | pcregrep -o '^password:\s"(?!_)\K[^"]+'
Returns:
password: "apassword123"
这是荒谬的。
您的输出实际上没有通过 grep
,因为它在 stderr 上。您应该能够通过将 stderr 重定向到 stdout 来做到这一点
security find-internet-password -ga anentry 2>&1 | pcregrep -o '^password:\s"(?!_)\K[^"]+'
在 OS X 中,有一个名为 security
的命令行实用程序,用于访问钥匙串。它可以 return 钥匙串中条目的密码,这就是我正在尝试做的。当我 运行 security find-internet-password -ga an_entry | grep "password"
时,我得到以下输出,正如预期的那样:
password: "apassword123"
我想提取引号之间的文字。 grep
,特别是 pcregrep
,应该有效但无效:
echo 'password: "apassword123"' | pcregrep -o '^password:\s"(?!_)\K[^"]+'
Returns:
apassword123
符合预期,但是:
security find-internet-password -ga anentry | pcregrep -o '^password:\s"(?!_)\K[^"]+'
Returns:
password: "apassword123"
这是荒谬的。
您的输出实际上没有通过 grep
,因为它在 stderr 上。您应该能够通过将 stderr 重定向到 stdout 来做到这一点
security find-internet-password -ga anentry 2>&1 | pcregrep -o '^password:\s"(?!_)\K[^"]+'