2013-05-05 2 views
0

내가 가진 kml 파일을 정리하는 sed 명령을 찾고 있습니다. 파일은 이상적으로 나는 부분 만로 시작 (포함) 최초의 <Placemark> 요소를 마지막에 (포함)하고자 한 줄에 모두이Sed 첫 번째 인스턴스 전과 마지막으로 삭제 명령

<some text><kml><Document><name> Name </name><Placemark><name> Hotel 01 </name></Placemark><Placemark><name> Hotel 02 </name></Placemark><Placemark><name> Hotel 03 </name></Placemark></Document></kml> 

처럼 </Placemark> 요소 모두에서 이러한 섹션 kml 파일은 단일 파일로 출력됩니다.

는 내가 처음 <Placemark> 전에 모든 텍스트를 삭제하고 마지막 </Placemark> 후 모든 텍스트를 삭제하거나 명령이 처음 <Placemark> 후 마지막 </Placemark> 전에 내용을 추출하기 위해 중 하나에 명령을 드리겠습니다.

내가 함께 지금까지 서투른 솜씨 관리했습니다 명령은 : 마지막으로 모든 출력하기 전에 </Document></kml>의 모든 인스턴스를 제거 후 처음 879 개 문자를 치우는에 근무하고있다

find . -name 'kmlFiles00*' -exec sed -r 's/^.{879}/ /' {} \; | sed -e 's/<\/Document><\/kml>//g' > placemarks_`date +%d-%m-%Y`.list 

파일,하지만 이것은 꽤 지저분한 그래서 나는 청소기 명령을 찾고 있어요. 나는 또한 점점 더 가까이 알고

sed -e 's/^.*<Placemark> //' -e 's/<\/Placemark>.*$//' 

을 시도했지만 여전히

답변

2
awk NF=NF FPAT='<Placemark>.*</Placemark>' 
  • 모든 필드
에게, 라인의 <Placemark>.*</Placemark>
  • force rebuild 인 인쇄로 필드를 정의 실패했다
  • 0

    이것은 당신을 위해 (GNU sed)

    sed -r 's/<Placemark>/\n&/;s/.*\n(.*<\/Placemark>).*/\1/' file