我想编写一个要在终端中执行的脚本。
我正在编辑xml文件,我想在检测到xml列的头部之后添加一个字符串或字符串。
以下是xml示例
bunch of line
more unimportant lines
and they can very in number
<States>
<item1> something something </item1>
<item2> something something </item1>
<item3> something something </item1>
</states>
现在我要添加一个项目4.但是,我希望它在item1之前插入。
理想情况下,文件看起来像:
bunch of line
more unimportant lines
and they can very in number
and even some lines were added here
and here
and here
<States>
<item4> something something </item1>
<item1> something something </item1>
<item2> something something </item1>
<item3> something something </item1>
</states>
请注意,顶部还添加了其他内容,这些内容对代码无关紧要。这些是将要进行的评论。
我愿意在perl中这样做,但shell会更好。
答案 0 :(得分:1)
您可以尝试这样做,假设您的标题States
已修复
$ tlines=`wc -l your_file | cut -f1 -d ' '`
$ lno=`grep -n "<States>" your_file | cut -f1 -d ':'`
$ head -${lno} your_file > your_file.tmp
$ cat file_to_insert >> your_file.tmp
$ tail -`expr ${tlines} - ${lno}` your_file >> your_file.tmp
此your_file.tmp
将从file_to_insert
插入行。
答案 1 :(得分:0)
sed '/<States>/a\
<item4> something something </item4>
' input-file