さて、インターネット上の例を使用してカスタムスクリプトでsedを使用して置き換えるのに約12時間かかったので、ここで質問します。
ファイルaに複数の行がありますが、「=」の後の値を次のように変更したいと思います。
[Paths]
config=
data=
mupen64plus=
plugins=
roms=
[Plugins]
audio=
input=
rsp=
video=
置換後に結果に入力する必要がある値:文字通り「$ PWD」ではなく「$ PWD」変数の結果が必要です。
[Paths]
config="$PWD/Datos/config"
data="$PWD/Datos/config"
mupen64plus="$PWD/$EJECUTABLE"
plugins=./.libs/64Bits/plugin
roms="$PWD/Roms"
[Plugins]
audio=mupen64plus-audio-sdl
input=mupen64plus-input-sdl
rsp=mupen64plus-rsp-cxd4-sse2
video=mupen64plus-video-glide64mk2
なぜなら、私は次のことを試すのに時間がかかりすぎたからです。
sed -i "s|mupen64plus=.*\"|mupen64plus="$PWD/"$EJECUTABLE\"|g" "file.conf"
一部のコンテンツはアーカイブされません。
別のバリエーションは次のとおりです。
sed "s#^(mupen64plus=).*#\l ${"\/`pwd`"//#/\\#}#" "file.conf"
「無効な代替」または類似のコンテンツを表示
試してみましたがうまくいかないもう1つの方法は次のとおりです。
sed 's:#mupen64plus=:'`pwd`':' "file.conf"
これ:
sed -E "s/(data=).*/\1\.\/Datos\/\config/" "./file.conf"
次のように置き換えます。
data=./Datos/nfig
sed -E "s/(data=).*/\1\.\/Datos\/\c\/o\/nfig/" "./Datos/config/mupen64plus-qt.conf"
data=./Datos/oo/nfig
sed -E "s/(data=).*/\1\.\/Datos\\co\nfig/" "./Datos/config/mupen64plus-qt.conf"
data=./Datos/
さて、それともawkのような他のものを使用する方が簡単ですか?誰でも助けることができますか?
ベストアンサー1
スケルトン構成ファイルの使用
VAR1=/home/archemar
VAR2=some/lib
sed -e "/^mupen64plus/s:=.*$:=${VAR1}/${VAR2}:" \
-e "/^config/s:=.*:=${VAR1}/DataOs/config:" config
どこ
- 最初の2行は変数を初期化します。
-e
sedの編集コマンドの紹介/^mupen64plus/
^
()パターンで始まる行に適用されます(ここでは固定文字列mupen64plus
)。s: : :
:
スラッシュの代わりに区切り文字として使用されるため、/
エスケープは必要ありません。=.*
行の最後まで、=
任意の文字(.
)、任意の数字()を置き換えます(aはできるだけ一致するので重複します)。*
$
*
=${VAR1}/${VAR2}
合計=
値${VAR1}/${VAR2}
(実際の拡張はシェル(おそらくbash)を呼び出すことによって行われます。だから、一重引用符の代わりに二重引用符が必要です)
明らかにする
[Paths]
config=/home/archemar/DataOs/config
data=
mupen64plus=/home/archemar/some/lib
plugins=
roms=
[Plugins]
audio=
input=
rsp=
video=
内部バージョン(-i
)を使用しないか、バックアップファイルを使用することをお勧めします。
sed -i .bak "/^mupen64plus/s:=.*$:=${VAR1}/${VAR2}:
/^config/s:=.*:=${VAR1}/DataOs/config:" config
もう一つの方法はここのドキュメントです。
cat <<END-OF-FILE > config
[Paths]
config="$PWD/Datos/config"
data="$PWD/Datos/config"
mupen64plus="$PWD/$EJECUTABLE"
plugins=./.libs/64Bits/plugin
roms="$PWD/Roms"
[Plugins]
audio=mupen64plus-audio-sdl
input=mupen64plus-input-sdl
rsp=mupen64plus-rsp-cxd4-sse2
video=mupen64plus-video-glide64mk2
END-OF-FILE
これにより、すべての変数が拡張された構成ファイルが作成されます。