簡體   English   中英

如何在 shell 腳本中使用 sed 替換數組中的字符串

[英]How to replace string in a array using sed in shell script

我在文件中聲明了一個數組,我想用最新值替換/更新數組。 下面是保存在文件中的數組。

declare -A IMAGES_OVERRIDE
IMAGES_OVERRIDE=(
[service1]='gcr.io/test-project/image1:latest'
[service2]='gcr.io/test-project/image2:9.5.16'
[service3]='gcr.io/test-project/data/image3:latest'
)

現在我想用最新的圖像 gcr.io/test-project/image2:10.0.1 更新 service2 並保存到文件中。

我試過如下

sed -i 's/[service2]=.*/[service2]='gcr.io/test-project/image2:10.0.1'/' ./override

但我遇到了以下錯誤。

sed: -e expression #1, char 35: unknown option to `s'

相同的命令正在為其他腳本工作,但這不是數組。

簡單地:

> sed -i "s#\[service2\]=.*#[service2]='gcr.io/test-project/image2:10.0.1'#" ./override
  • 筆記:
  1. sed表達式周圍使用"而不是' (您的sed腳本包含' );
  2. 使用#而不是/來限制sed替換表達式的每個部分(您的新令牌包含/ );
  3. 在 RE 表達式中的每個[]之前使用\[]是特殊的 RE 字符);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM