2013-10-17 4 views
0
<Placemark id="051314"> 
<name>HI Hostel</name> 
<description><![CDATA[<div style="color: #404040;font-size: 12px"><a "#book"style="color:#295181;font-size: 12px" target="_top" href="http://www.hihostels.com/dba/hostel051314.de.htm?himap=Y#book" >Girona - Equity Point Girona</a><img style="margin: 5px 0px 5px 0px; border-color:#909090; padding:2px; display:block; clear:both;" src="http://www.hihostels.com/pics/ES/051314_pic_main.jpeg" width="96" height="72" border="1">Plaça Catalunya, 23<br>Girona<br>17002<br><b>Spanien</b><br><div style="margin-top:3px;"><img style="vertical-align:middle;margin-right:5px;" src="http://www.hihostels.com/imgfront/pegsmall.png" /><a style="color:#295181;font-size: 12px;" href="http://www.hihostels.com/openSVwindow(41.981658,2.823057)">Street View</a></div></div> ]]></description> 

내 원본 파일은 기본적으로 http://www.hihostels.com/mapcoord/ES.en.kml에서 오는 것과 같습니다. 호스텔 실명으로 (쓸모없는) 이름 태그 "HI Hostel"(항상 모든 장소 표시에 대해 동일)를 바꾸고 싶습니다. 실제 이름은 설명 태그의 한 줄 아래에 표시됩니다. 위의 경우에는 "Girona - Equity Point Girona"가됩니다.복잡한 sed 여러 줄 일치 및 바꾸기

어떻게하는지에 대한 영리한 아이디어가 있습니까? 읽어 주셔서 감사합니다.

답변

0

같은 제품이 있습니까? awk

awk -F, '/^<name>/ {next} /^<description/ {s=$0;gsub(/<[^>]*>/, ",");$0="<name>" $4 "</name>\n" s} 1' file 
<Placemark id="051314"> 
<name>Girona - Equity Point Girona</name> 
<description><![CDATA[<div style="color: #404040;font-size: 12px"><a "#book"style="color:#295181;font-size: 12px" target="_top" href="http://www.hihostels.com/dba/hostel051314.de.htm?himap=Y#book" >Girona - Equity Point Girona</a><img style="margin: 5px 0px 5px 0px; border-color:#909090; padding:2px; display:block; clear:both;" src="http://www.hihostels.com/pics/ES/051314_pic_main.jpeg" width="96" height="72" border="1">Plaça Catalunya, 23<br>Girona<br>17002<br><b>Spanien</b><br><div style="margin-top:3px;"><img style="vertical-align:middle;margin-right:5px;" src="http://www.hihostels.com/imgfront/pegsmall.png" /><a style="color:#295181;font-size: 12px;" href="http://www.hihostels.com/openSVwindow(41.981658,2.823057)">Street View</a></div></div> ]]></description> 

사용이도 작동 할 수는 :

awk -F"<|>" '/^<name>/ {next} /^<description/ {$0="<name>" $8 "</name>\n" $0} 1' file