1. ホーム
  2. bash

[解決済み] シェルスクリプトで部分文字列を別の文字列に置き換える

2022-03-22 08:01:01

質問

SuziとMarryが大好きなのですが、SuziをSaraに変えたいのですが、どうしたらいいですか?

#!/bin/bash
firstString="I love Suzi and Marry"
secondString="Sara"
# do something...

結果はこのようになるはずです。

firstString="I love Sara and Marry"

解決方法は?

を置き換えるには 最初 を使用すると、指定した文字列でパターンが表示されます。 ${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 Shell Parameter Expansion " "を参照してください。 .)

この機能はPOSIXで規定されているものではなく、Bashの拡張機能であるため、すべてのUnixシェルが実装しているわけではないことに注意してください。POSIX の関連文書については オープングループ技術基準基本仕様書第7号 は、その シェル&ユーティリティ の巻、§2.6.2 パラメータ展開の巻。 .