我想从一个文件中复制一些行并将其粘贴到特定的另一个文件中 使用shell脚本的位置
例如:我想在行中复制包含字符串"name2"
和"inst"
的行,并在</inst>
的字符串name2
后面的行file1.xml
复制到file2.xml
。
在file2.xml中粘贴行的位置是包含文本“clipKTP”的行之前。
file1.xml
<Manufacturer clause >
<inst abtz "nameABC"> //Inst nameABC
<pressure 100> </pressure>
<temp 50> </temp>
</inst>
<inst abtz "name2"> //Inst name2
<pressure 100> </pressure>
<temp 50> </temp>
</inst>
<inst abtz "name5678"> //Inst name5678
<pressure 100> </pressure>
<temp 50> </temp>
</inst>
</Manufacturer>
file2.xml
<Measure> atk
<inst abtz "name1"> // Inst name1
<pressure 100></pressure>
<temp 50></temp>
</inst>
<clipton> "clipKTP"
<slave slvgo > </slave>
</clipton>
</Measure>
结果file2.xml
应该看起来像
<Measure> atk
<inst abtz "name1"> // Inst name1
<pressure 100></pressure>
<temp 50></temp>
</inst>
<inst abtz "name2"> //Inst name2
<pressure 100></pressure>
<temp 50></temp>
</inst>
<clipton "clipKTP">
<slave slvgo > </slave>
</clipton>
</Measure>
答案 0 :(得分:0)
您可以使用sed
或awk
轻松提取有趣的部分,并使用sed
或awk
将其插入正确的位置。
excerpt=$(sed -n -e '/name2/,/<\/inst>/p' file1.xml)
awk -v excerpt="$excerpt" '
printed == 0 && /clipton/ {
print(excerpt);
print($0); printed = 1
}' < file2.xml > file2-result.xml