RFC4716 SSH2公钥的reqular表达式是什么?

时间:2015-12-16 10:44:53

标签: regex ssh sed

我需要在用空格替换所有新行字符后恢复RFC4716 SSH2公钥结构(密钥内容作为参数传递给程序并在bash中作为$ @检索)。我想用正则表达式和sed程序来做。有没有人遇到过解决方案?

示例:

  • 传递给程序的输入字符串(一个字符串将所有新行替换为空格):

    ---- BEGIN SSH2 PUBLIC KEY ---- Comment: "1024-bit RSA, converted from OpenSSH by me@example.com" x-command: /home/me/bin/lock-in-guest.sh AAAAB3NzaC1y(... some spaces are inserted instead of LF)9zcE= ---- END SSH2 PUBLIC KEY ----

  • 输出字符串:

    ---- BEGIN SSH2 PUBLIC KEY ---- Comment: "1024-bit RSA, converted from OpenSSH by me@example.com" x-command: /home/me/bin/lock-in-guest.sh AAAAB3NzaC1yc2EAAAABIwAAAIEA1on8gxCGJJWSRT4uOrR13mUaUk0hRf4RzxSZ1zRb YYFw8pfGesIFoEuVth4HKyF8k1y4mRUnYHP1XNMNMJl1JcEArC2asV8sHf6zSPVffozZ 5TT4SfsUu/iKy9lUcCfXzwre4WWZSXXcPff+EHtWshahu3WzBdnGxm5Xoi89zcE= ---- END SSH2 PUBLIC KEY ----

1 个答案:

答案 0 :(得分:1)

这个命令能做你想做的吗?

sed -e 's/Comment:/\n&/' -e 's/x-command: [^ ]* /\n&\n/' -e 's/---- END/\n&/' | sed '4 { s/ /\n/g }'

第一个sed重新创建原始行,但将公钥作为一行留空。第二个sed用换行符替换公钥中的空格(第四行)。