0

ターミナルで実行するスクリプトを書きたいです。

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 を追加したいのですが、アイテム 1 の前に挿入したいと考えています。

理想的には、ファイルは次のようになります。

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 でこれを行うことにオープンですが、シェルはさらに優れています。

4

2 に答える 2

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ます。

于 2012-09-14T19:03:35.410 に答える
0
sed '/<States>/a\
<item4> something something </item4>
' input-file
于 2012-09-14T19:34:16.687 に答える