CLRFを公開鍵の新しい行に置き換える方法

CLRFを公開鍵の新しい行に置き換える方法

CLRF単一の文字列になるように公開鍵を変更する必要があります。\n

入力する:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvam/SXoPt4YccVuh1Pj/
GmVc/43Y58Weell9U8yIOzqHxWoDFwjRTAtZceVg7SY17ex5AsFDT+4pf46GXa7A
5Jd4u0VlCAC06GKkz0Dvfh4ETIfZXAwXhbvWUm1IgoERG46DAwIgseHe2bRhC56E
9KkVzbuivAan5vvOuKnZ9DkSKCCGpUo/UQfImbkFzNHGb9NPivvHf19pXio7vM7E
DmP1GYEhVUtRgUoUfNKqEKUoO3uueYMLUwL9ePjnNdg3chpneBihFPd0317FAc8n
0TibwVUR2iJrH5fEUNCczfnydQ2p5hKxvhYjswAe+PHktmlhbnmeBo16oUAuowxp
6wIDAQAB
-----END PUBLIC KEY-----

私が試したことは次のとおりです。

PUB_KEY=$(cat keyfile)
PUB_KEY=$(echo $PUB_KEY | sed 's/ [^PUBLIC KEY]/\\n/g')

出力:

-----BEGIN PUBLIC KEY-----\nIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvam/SXoPt4YccVuh1Pj/\nmVc/43Y58Weell9U8yIOzqHxWoDFwjRTAtZceVg7SY17ex5AsFDT+4pf46GXa7A\nJd4u0VlCAC06GKkz0Dvfh4ETIfZXAwXhbvWUm1IgoERG46DAwIgseHe2bRhC56E\nKkVzbuivAan5vvOuKnZ9DkSKCCGpUo/UQfImbkFzNHGb9NPivvHf19pXio7vM7E\nmP1GYEhVUtRgUoUfNKqEKUoO3uueYMLUwL9ePjnNdg3chpneBihFPd0317FAc8n\nTibwVUR2iJrH5fEUNCczfnydQ2p5hKxvhYjswAe+PHktmlhbnmeBo16oUAuowxp\nwIDAQAB\n----END PUBLIC KEY-----

しかし、最初の文字「M」が削除され、1つのスペースが置き換えられないなど、出力にはいくつかの問題があります。

ベストアンサー1

正規表現が期待どおりに機能しません。後にPorUまたはB... が続かない空白文字と一致します。[…]複数の文字のうちの1つだけが一致する文字クラスです。M文字クラスにないため、文字列から欠落している他の文字のように削除されます。

GNUを使用すると、sedすべての改行をリテラルに変更し、行末\nの最後のリテラルを削除できます。\n

PUB_KEY=$(sed -z 's/\n/\\n/g;s/\\n$//' keyfile)

今、文字列は改行文字で終わりませんが、それがあなたが望むものだと思います。

おすすめ記事