コマンドラインツールを使用して一重引用符で複数行のテキストを置き換える方法は?

コマンドラインツールを使用して一重引用符で複数行のテキストを置き換える方法は?

$variable不確実な数のテキスト行を保存するスクリプトがあります。名前を付けてscript.bash次の場所にいるとしましょう$HOME

#!/bin/bash

# commands on the beginning of my script

variable='Lorem Ipsum is simply dummied 
text of the printing and 
typesetting industry. Lorem Ipsum has been the
industry standard dummy text ever since the 1500s'

# commands at the end of my script

variableのテキストを変更する新しいスクリプトを作成したいと思いますscript.bash。コードのアイデアは次のとおりです。

#!/bin/bash

file="$HOME/script.bash"
mynewvariable='one
two
three'

substitute_everything_inside_variable () {
    # code
}

substitute_everything_inside_variable "$mynewvariable" "$file"

1行の場合は、sed次のように行全体を新しい行に置き換えることができます。

sed -i "5s/.*/$mynewvariable/" "$HOME/script.bash" 

ただし、一重引用符内のすべての内容を置き換える必要があること(そしてその中のテキスト行の数は可変です)を考えると、コマンドラインツールを使用してこれを行う方法がわかりません。各行で何が起こっているのかを読んで解釈せずにこれを行う方法はありますか?

ベストアンサー1

中断したくない他の多くのコンテンツを含むファイルから複数行に囲まれた引用符付き文字列を変更するよりも、ファイルの内容全体を変更する方がはるかに簡単です。

内容を$variableファイル(たとえばvfile.txt)に入れ、シェルスクリプトでこのようなことを行うようにしますvariable="$(cat vfile.txt)"

その後、交換または変更したい方法を使用できますvfile.txt

おすすめ記事