別のファイルの値を入力として使用してファイルを編集し、ファイルの編集内容を別のファイルにリダイレクトする

別のファイルの値を入力として使用してファイルを編集し、ファイルの編集内容を別のファイルにリダイレクトする

既定では、次のData.txtを含むファイルがあります。

<IP Address1>, 10, 23, <GW IP1>
FINAL INPUT.45.324
<IP Address2>, 40, 33, <GW IP2>

info.txtで指定された各タグの値を含む別のファイル

<IP Address1>10.155.120.20
<GW IP1>10.155.120.30
<IP address2>10.30.123.30
<GW IP2>10.30.123.1

うまくいけば、次のようになります(file.txt)

10.155.120.20, 10, 23, 10.155.120.30
FINAL INPUT.45.324
10.30.123.30, 40, 33, 10.30.123.1

例を見つけようとしましたが、わかりません。

ベストアンサー1

あなたが探しているものはテンプレートエンジンと呼ばれます。私はextremly simple not reliableあなたのために一つを作りました。 sedに基づいており、非常に脆弱です。

それ以外の場合、<IP address2>10.30.123.30私の<IP Address2>10.30.123.30スクリプトは期待どおりに機能しません。完全なコードは次のとおりです。

#!/usr/bin/env bash
cat <<EOF >file_1
<IP Address1>, 10, 23, <GW IP1>
FINAL INPUT.45.324
<IP Address2>, 40, 33, <GW IP2>
EOF
cat <<EOF >file_2
<IP Address1>10.155.120.20
<GW IP1>10.155.120.30
<IP Address2>10.30.123.30
<GW IP2>10.30.123.1
EOF
cp file_1 file_final
while read to_split; do
    echo "to_split: $to_split"
    arg1="${to_split%>*}>" # > because it is removed
    arg2="${to_split#*>}"
    echo "1: $arg1"
    echo "2: $arg2"
    sed -i  "s/$arg1/$arg2/g" file_final
done < file_2

スクリプトはそれ自体が含まれているので、自分で試してみることができます:)

問題は、これが良い解決策であるとは言えないということです。これ本物解決策は、Jinja2などのテンプレートエンジンを使用することです。

おすすめ記事