2つのXMLファイルがあります。最初は~/tmp/test.xml
2番目で、/data/myuser/.mycontent/mytest.xml
最初のXMLファイルのすべての内容を2番目のXMLファイルの35行目に追加しようとしています。以下を試してみましたが、運がありませんでした。
sed -n '35,~/tmp/test.xml`' /data/myuser/.mycontent/mytest.xml
(cat /data/myuser/.mycontent/mytest.xml; echo) | sed '35r ~/tmp/test.xml'
ed -s ~/tmp/test.xml <<< $'35r /data/myuser/.mycontent/mytest.xml\nw'
2番目のXMLファイルの34行目のうち33行目は空です。
#the following tags contain employee location
最初のXMLファイルのXMLタグ
<Location "/mylocation">
first Address
second Address
Mylocation "XX/XX/XX/XX"
Myphone "XXXXXXX"
</Location>
私が何を間違っているのかアドバイスをお願いします。
編集1
最初のXML~/tmp/test.xml
ファイルに
<Location "/mylocation">
first Address
second Address
Mylocation "XX/XX/XX/XX"
Myphone "XXXXXXX"
</Location>
2番目のXMLには次のもの/data/myuser/.mycontent/mytest.xml
があります。
NameVirtualHost *:XXXX
<VirtualHost *:XXXX>
ServerName AAAAAAAA
# Manager comment 1
# Manager comment 2
# Manager comment 3
#
DocumentRoot "/data/myuser/.mycontent/"
# support email [email protected]
# started at 2010
<employee /*>
AllowOverride None
</employee>
<Location "/">
mylocation
Deny from all
</Location>
<Location "/icons/">
# employee info
my employee info
Allow from all
</Location>
DavLockDB /tmp/${APACHE_HOSTNAME}.DavLock
DAVMinTimeout 5000
LimitXMLRequestBody 0
# This should be changed to whatever you set DocumentRoot to.
## I need to add new tags here ##
<Location "/employee1">
first Address
second Address
Mylocation "XX/XX/XX/XX"
Myphone "XXXXXXX"
</Location>
<Location "/employee2">
first Address
second Address
Mylocation "XX/XX/XX/XX"
Myphone "XXXXXXX"
</Location>
## more tags same as above
## then manager comment
編集2
2番目のファイルは/data/myuser/.mycontent/mytest.xml
次のようにする必要があります。
NameVirtualHost *:XXXX
<VirtualHost *:XXXX>
ServerName AAAAAAAA
# Manager comment 1
# Manager comment 2
# Manager comment 3
#
DocumentRoot "/data/myuser/.mycontent/"
# support email [email protected]
# started at 2010
<employee /*>
AllowOverride None
</employee>
<Location "/">
mylocation
Deny from all
</Location>
<Location "/icons/">
# employee info
my employee info
Allow from all
</Location>
DavLockDB /tmp/${APACHE_HOSTNAME}.DavLock
DAVMinTimeout 5000
LimitXMLRequestBody 0
# This should be changed to whatever you set DocumentRoot to.
## I need to add new tags here ##
## this tag from first file
<Location "/mylocation">
first Address
second Address
Mylocation "XX/XX/XX/XX"
Myphone "XXXXXXX"
</Location>
## edit end
<Location "/employee1">
first Address
second Address
Mylocation "XX/XX/XX/XX"
Myphone "XXXXXXX"
</Location>
<Location "/employee2">
first Address
second Address
Mylocation "XX/XX/XX/XX"
Myphone "XXXXXXX"
</Location>
## more tags same as above
## then manager comment
注:マージの場所を指定## this tag from first file
してください。## edit end
ベストアンサー1
GNU sedの使用:
file2.xmlの35行目に改行文字を使用してfile1.xmlを挿入するには、次のようにします。
sed -e '34{p;g;r file1.xml' -e '}' file2.xml
file2.xmlを「所定の位置」で編集するには、sedにオプションを追加します-i
。