29 個のファイルから行を読み取り、これらの行を処理して if ステートメントに入れたいと考えています。
この例では、基本的に while ループを使用してファイルを読み取り、各ファイルからこれらの行を読み取り、if ステートメントで sed を使用して処理する 3 つのサンプル ファイルと 1 つのシェル スクリプト ファイルを作成しました。この if ステートメントは、最初の変数を確認するために使用されます (例abc.def) をすべてのファイルに追加し、それらの値をファイルにコピーします。
例:
a.txt
abc.def=123
efg.hij=45666
kml.nop=789
qrs.tuv=901
wxy.zabc=234
b.txt
abc.def=123
efg.hij=45666
kml.nop=897
klm.nop=123
qrs.tuv=901
wxy.zabc=234
c.txt
abc.def=12344
efg.hij=456
kml.nop=123
klm.nop=789
wxy.zabc=234
sprict.sh
#!/bash/bin
count=1
while IFS= read -r lineA && IFS= read -r lineB <&3 && IFS= read -r lineC <&4; do
#splitting the line into two,example from line abc.def=123 slit varaibles as "abc.def" and "123"
A1=`echo "$lineA" | sed -e 's/\=\(.*\)//' `
A2=`echo "$lineA" | sed -e 's/^[^=]*=//' `
B1=`echo "$lineB" | sed -e 's/\=\(.*\)//' `
B2=`echo "$lineB" | sed -e 's/^[^=]*=//' `
C1=`echo "$lineC" | sed -e 's/\=\(.*\)//' `
C2=`echo "$lineC" | sed -e 's/^[^=]*=//' `
if [ [ "$A1" = "$B1" && "$A1" = "$C1"]];then
echo -e "<variable id=\"$A1\">\t
<a2>"$A2"</a2>\t
<b2>"$B2"</b2>\t
<c2>"$C2"</c2>\t
</variable>\n" >> common.txt
fi
done <a.txt 3<b.txt 4<c.txt
予想される出力は次のとおりです。
<variable id="abc.def">
<a2>123</a2>
<b2>123</b2>
<c2>12344</c2>
</variable>
<variable id="efg.hij">
<a2>456</a2>
<b2>45666</b2>
<c2>45666</c2>
</variable>
<variable id="kml.nop">
<a2>789</a2>
<b2>897</b2>
<c2>123</c2>
</variable>