既定では、次の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などのテンプレートエンジンを使用することです。