我想从 29 个文件中读取行并处理这些行并将它们放入 if 语句中。
在这个例子中,我创建了 3 个示例文件和一个 shell 脚本文件,它们基本上使用 while 循环读取文件,并从每个文件中读取这些行,并使用带有 if 语句的 sed 进行处理,这个 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>