ファイル間に行を挿入するシェルスクリプト

ファイル間に行を挿入するシェルスクリプト

内容が書かれたfile1.txtがあるとしましょう。

Ramesh
Suresh
Raman

以下のシェルスクリプトで file1 .txt のコンテンツ名を読み、準備します。名前= $行エコドアから。 (shの3行目に作成されたシェルスクリプトでは表示できません。

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

別のXML file2.xmlがあります。

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

file2.xmlに行を挿入するシェルスクリプトを改善したいと思います。 file2.xmlでパターンを見つけると終わりを押して上記の内容を挿入します。終わり、それぞれ改行文字があります。誰でもシェルスクリプトを修正するのに役立ちますか?

出力は次のようになります。

<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>

関連情報