shell脚本从一个文件复制并粘贴到另一个文件

时间:2014-02-21 10:23:43

标签: xml shell sh

我想从一个文件中复制一些行并将其粘贴到特定的另一个文件中 使用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>

1 个答案:

答案 0 :(得分:0)

您可以使用sedawk轻松提取有趣的部分,并使用sedawk将其插入正确的位置。

 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