sed: -e 式 #1、文字 101: 終了していない 's' コマンド

sed: -e 式 #1、文字 101: 終了していない 's' コマンド

誰かがここで何が起こっているのか教えてもらえますか?

sed -i "s|##CONNECTION_DETAILS##|${CONNECTION_DETAILS}|g" dep.yaml. 

CONNECTION_DETAILSの値はエンコードされた形式です。

CSAgewogICAgICAgICJjb25uZWN0aW9uX25hbWVfMSI6ICJPRlNBQV9BTkFMWVRJQ1NfUFVCIiwKICAgICAgICAiZGF0YWJhc2VfbmFtZV8xIjogIk9GU0FBX0FOQUxZVElDU19QVUIiLAogICAgICAgICJiaV9TZXJ2aWNlc18xIjpbImR2IiwicnBkIiwiYmlwdWJsaXNoZXIiXQogICAgICB9Cg==

のための:

{
    "connection_name_1": "OFSAA_ANALYTICS_PUB",
    "database_name_1": "OFSAA_ANALYTICS_PUB",
    "bi_Services_1":["dv","rpd","bipublisher"]
}

ベストアンサー1

変数CONNECTION_DETAILSにLF(\n)文字が含まれています。

したがって、sed終了していないコマンドを理解しないでくださいs。 2番目の以前のLF "

そして:

> CONNECTION_DETAILS='CSAgewogICAgICAgICJjb25uZWN0aW9uX2
5hbWVfMSI6ICJPRlNBQV9BTkFMWVRJQ1NfUFVCIiwKICAgICAgICAi
ZGF0YWJhc2VfbmFtZV8xIjogIk9GU0FBX0FOQUxZVElDU19QVUIiLA
ogICAgICAgICJiaV9TZXJ2aWNlc18xIjpbImR2IiwicnBkIiwiYmlw
dWJsaXNoZXIiXQogICAgICB9Cg=='

2つの解決策:

  1. LF文字の削除
> lf=$'\n'
> echo "xxxxx ##CONNECTION_DETAILS## xxxxx" | sed -e "s|##CONNECTION_DETAILS##|${CONNECTION_DETAILS//$lf}|g"
xxxxx CSAgewogICAgICAgICJjb25uZWN0aW9uX25hbWVfMSI6ICJPRlNBQV9BTkFMWVRJQ1NfUFVCIiwKICAgICAgICAiZGF0YWJhc2VfbmFtZV8xIjogIk9GU0FBX0FOQUxZVElDU19QVUIiLAogICAgICAgICJiaV9TZXJ2aWNlc18xIjpbImR2IiwicnBkIiwiYmlwdWJsaXNoZXIiXQogICAgICB9Cg== xxxxx
  1. LFを維持(避けてください)
> lf=$'\n'
> echo "xxxxx ##CONNECTION_DETAILS## xxxxx" | sed -e "s|##CONNECTION_DETAILS##|${CONNECTION_DETAILS//$lf/\\$lf}|g"
xxxxx CSAgewogICAgICAgICJjb25uZWN0aW9uX2
5hbWVfMSI6ICJPRlNBQV9BTkFMWVRJQ1NfUFVCIiwKICAgICAgICAi
ZGF0YWJhc2VfbmFtZV8xIjogIk9GU0FBX0FOQUxZVElDU19QVUIiLA
ogICAgICAgICJiaV9TZXJ2aWNlc18xIjpbImR2IiwicnBkIiwiYmlw
dWJsaXNoZXIiXQogICAgICB9Cg== xxxxx

修正する

テキストの周囲に二重引用符を追加するには、次のようにします。

> lf=$'\n'
> echo "xxxxx ##CONNECTION_DETAILS## xxxxx" | sed -e "s|##CONNECTION_DETAILS##|\"${CONNECTION_DETAILS//$lf/\\$lf}\"|g"
xxxxx "CSAgewogICAgICAgICJjb25uZWN0aW9uX2
5hbWVfMSI6ICJPRlNBQV9BTkFMWVRJQ1NfUFVCIiwKICAgICAgICAi
ZGF0YWJhc2VfbmFtZV8xIjogIk9GU0FBX0FOQUxZVElDU19QVUIiLA
ogICAgICAgICJiaV9TZXJ2aWNlc18xIjpbImR2IiwicnBkIiwiYmlw
dWJsaXNoZXIiXQogICAgICB9Cg==" xxxxx

おすすめ記事