シェルスクリプトで1つの部分文字列を別の文字列に置き換える 質問する

シェルスクリプトで1つの部分文字列を別の文字列に置き換える 質問する

「I love Suzi and Marry」という名前があり、「Suzi」を「Sara」に変更したいです。

firstString="I love Suzi and Marry"
secondString="Sara"

望ましい結果:

firstString="I love Sara and Marry"

ベストアンサー1

パターンの最初の出現を指定された文字列に置き換えるには、次を使用します${parameter/pattern/string}

#!/bin/bash
firstString="I love Suzi and Marry"
secondString="Sara"
echo "${firstString/Suzi/"$secondString"}"
# prints 'I love Sara and Marry'

すべての出現箇所を置換するには、次を使用します:${parameter//pattern/string}

message='The secret code is 12345'
echo "${message//[0-9]/X}"
# prints 'The secret code is XXXXX'

(これはBash リファレンスマニュアル§3.5.3「シェルパラメータの展開」

この機能はPOSIXで規定されていないことに注意してください。これはBashの拡張であり、すべてのUnixシェルがこれを実装しているわけではありません。関連するPOSIXドキュメントについては、以下を参照してください。Open Group 技術標準基本仕様、第 7 版Shell & Utilities巻、§2.6.2「パラメータ拡張」

おすすめ記事