2番目のファイルで6行を変更するには、次のsedコマンドをこのように書く必要がありますか?

2番目のファイルで6行を変更するには、次のsedコマンドをこのように書く必要がありますか?

私はシェルスクリプトを必要とする研究プロジェクトを進めています。プログラミング経験はありますが、経験はほとんどありません。問題のファイルは次のとおりです。

export OMP_NUM_THREADS=12


read controls
#inlist directory
export MESA_INLIST="/home/nick/mesa-r11701/star/test_suite/rsp_Cepheid_grid/inlist"

2番目のファイルの入力を変更するためにこのファイルを借りました/home/nick/mesa-r11701/star/test_suite/rsp_Cepheid_grid/inlist

   RSP_mass = 4.165d0
   RSP_Teff = 6050
   RSP_L = 1438.8d0
   RSP_X = 0.73d0
   RSP_Z = 0.007d0

      log_directory='LOGS_1'
      photo_directory='photos_1'

これらのさまざまな変数に異なる浮動小数点(または'photos_に関連付けられた整数と文字列、たとえばから'LOGS_に変更)を割り当てたいと思います。このようにsedコマンドを書く必要がありますか?これがこれを達成する唯一の方法であるかどうかを尋ねるのではなく、これがこれを達成する正しい方法の1つであるかどうかを尋ねることです。LOGS_1LOGS_2

read mass
read Teff
read L
read X
read Z
read d_number


sed -i -e "s/.*\(RSP_mass\).*/\1 = '$mass'/i" "$MESA_INLIST"
sed -i -e "s/.*\(RSP_Teff\).*/\1 = '$Teff'/i" "$MESA_INLIST"
sed -i -e "s/.*\(RSP_L\).*/\1 = '$L'/i" "$MESA_INLIST"
sed -i -e "s/.*\(RSP_X\).*/\1 = '$X'/i" "$MESA_INLIST"
sed -i -e "s/.*\(RSP_Z\).*/\1 = '$Z'/i" "$MESA_INLIST"
sed -i -e "s/.*\(log_directory\).*/\1 = 'LOGS_$d_number'/i" "$MESA_INLIST"
sed -i -e "s/.*\(photo_directory\).*/\1 = 'photos_$d_number'/i" "$MESA_INLIST"

なぜ私がsedコマンドをこの特定の方法で書いたのかについては、以下を参照してください。私の前の質問

ベストアンサー1

出力が期待に一致する場合(つまり、インデントがなく、すべての値が一重引用符で囲まれ、常に前後にスペース文字がある場合)、次のように少し=変更できます。

  • 1つのreadコマンド(-pサポートされている場合)がすべての変数に適用されます。すべての値を一度に編集する方が簡単です(スペース/タブ区切り)。
  • 電話sedが来た、もう来た以前の回答
  • 行の先頭に一致するスペースまたはタブのみを.*使用して置換する^[[:blank:]]*
  • 一貫性を保つために、ローカル変数には小文字の変数名を使用します。

read -p "Please enter mass, Teff, L, X, Z, directory number: " mass teff l x z d_number

sed -i \
  -e "s/^[[:blank:]]*\(RSP_mass\).*/\1 = '$mass'/i" \
  -e "s/^[[:blank:]]*\(RSP_Teff\).*/\1 = '$teff'/i" \
  -e "s/^[[:blank:]]*\(RSP_L\).*/\1 = '$l'/i" \
  -e "s/^[[:blank:]]*\(RSP_X\).*/\1 = '$x'/i" \
  -e "s/^[[:blank:]]*\(RSP_Z\).*/\1 = '$z'/i" \
  -e "s/^[[:blank:]]*\(log_directory\).*/\1 = 'LOGS_$d_number'/i" \
  -e "s/^[[:blank:]]*\(photo_directory\).*/\1 = 'photos_$d_number'/i" \
  "$MESA_INLIST"

おすすめ記事