ケース例:
Array=( "Mary" "had a __SingleQuote__little__SingleQuote__" "lamb" )
for i in "${Array[@]}"; do echo "$i"; done
Mary
had a __SingleQuote__little__SingleQuote__
lamb
欲しい変化文字列を__SingleQuote__
次に変換アポストロフィ '
文字なので、配列は次のようになります。
ConvertedArray=( "Mary" "had a 'little'" "lamb" )
for i in "${ConvertedArray[@]}"; do echo "$i"; done
Mary
had a 'little'
lamb
たぶん、次のようなものがあります。
ConvertedArray=( "$(echo ${Array[@]} | sed s/___SingleQuote__/\'/ )" )
ただし、このコマンドは誤った結果をもたらします。
Array=( "Mary" "had a __SingleQuote__little__SingleQuote__" "lamb" )
ConvertedArray=( "$(echo ${Array[@]} | sed s/___SingleQuote__/\'/ )" )
for i in "${ConvertedArray[@]}"; do echo "$i"; done
Mary had a __SingleQuote__little__SingleQuote__ lamb
何ですか正しいコマンドLinuxシェル(または解決策が具体的である必要がある場合はBash)でこれを行いますか?
ループを実装できますが、配列が非常に長くなる可能性があるため効率シェルツールを使用する場合に好ましい。
テスト済み:
- コマンド
tr
ですが、文字ごとに翻訳されます。 - 「sed」コマンドを実行しましたが、「sed」構文に必要な一重引用符を処理できませんでした。
ベストアンサー1
では、bash
要素ごとに配列要素にグローバルパラメータ置換を適用できる必要があります。
$ Array=( "Mary" "had a __SingleQuote__little__SingleQuote__" "lamb" )
$ ConvertedArray=( "${Array[@]//__SingleQuote__/\'}" )
$ printf '%s\n' "${ConvertedArray[@]}"
Mary
had a 'little'
lamb
例を見る検索と置換:配列