입력 파일의 텍스트는 다음과 같습니다.
<title>
<band height="21" isSplitAllowed="true" >
<staticText>
<reportElement
x="1"
y="1"
width="313"
height="20"
key="staticText-1"/>
<box></box>
<textElement>
<font fontName="Arial" pdfFontName="Helvetica-Bold" size="14" isBold="true" isUnderline="true"/>
</textElement>
<text><![CDATA[4) Computation of Tier I and Tier II Capital :]]></text>
</staticText>
</band>
</title>
출력 파일에는 다음이 있어야 합니다.
4) Computation of Tier I and Tier II Capital :
파일에 태그가 많이 <title>
있습니다 [CDATA]
. 하지만 라벨 아래의 텍스트를 복사 <title>
하고 <CDATA>
그 출력을 다른 파일에 저장하고 싶습니다.
답변1
**
여기서 강조 표시하기 위해 섹션 에 시퀀스 쌍을 추가하려는 것 같습니다 CDATA
. 불행하게도 이는 잘못된 XML로 바뀌었습니다. 이런 뜻이라고 가정하면,
<text><![CDATA[4) Computation of Tier I and Tier II Capital :]]></text>
XML 파서를 사용하여 XML을 구문 분석할 수 있습니다.
xmlstarlet sel -T -t -v '//text' -n x.xml
4) Computation of Tier I and Tier II Capital :
<text/>
"요소의 내용"보다 더 엄격한 제약 조건이 있는 경우 XPath 필터를 적절하게 조정할 수 있습니다. 예를 들어:
xmlstarlet sel -T -t -v '/title/band/staticText/text' -n x.xml
4) Computation of Tier I and Tier II Capital :
답변2
이와 같이?
$ sed -n '/<title>/,/<\/title>/p' input.txt | grep -oP '(?<=\[CDATA\[).*(?=\])'
sed
과 (이 라벨 포함)<title>
사이의 모든 내용을 인쇄합니다 . 해당 지역에 항상 있는</title>
경우 이 단계를 생략할 수 있습니다.[CDATA
grep
[CDATA[
그 전후의 모든 것을 인쇄합니다]