在文件之间插入行的 Shell 脚本

在文件之间插入行的 Shell 脚本

假设有一个file1.txt,其中写入内容

Ramesh
Suresh
Raman

从下面的 shell 脚本中,我从 file1 .txt 中读取内容名称并准备名称=$行在echo语句中。(无法在shell脚本中显示,在sh的第3行中写入。

while read -r line
do
   echo "<Name="$line"/>"
done <"file.txt"

还有另一个xml file2.xml

<project>
<target>
start
end
</target>
</project>

我想增强我的 shell 脚本,它将向 file2.xml 插入行。如果在 file2.xml 中,我们找到模式结尾,然后插入上面的内容结尾,每个都换行。任何人都可以帮忙修改shell脚本吗?

输出应如下所示:-

<project>
<target>
start
Name=Ramesh
Name=Suresh
Name=Raman
end
</target>
</project>

答案1

我会这样做:

names=$(sed s/^/Name=/ file1.txt)

ed file2.txt <<END
/^end$/i
$names
.
wq
END

现在:

$ cat file2.txt
<project>
<target>
start
Name=Ramesh
Name=Suresh
Name=Raman
end
</target>
</project>

答案2

你可以使用 awk

awk 'NR==FNR{Lines=Lines "Name=" $0 "\n";next}/end/{print Lines $0 ;next}1' file{1,2}

<project>
<target>
start
Name=Ramesh
Name=Suresh
Name=Raman
end
</target>
</project>

相关内容