![XML 파일에서 특정 값, 즉 XML 태그 뒤의 값(예: = 기호 뒤)을 추출하는 방법](https://linux55.com/image/164114/XML%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%ED%8A%B9%EC%A0%95%20%EA%B0%92%2C%20%EC%A6%89%20XML%20%ED%83%9C%EA%B7%B8%20%EB%92%A4%EC%9D%98%20%EA%B0%92(%EC%98%88%3A%20%3D%20%EA%B8%B0%ED%98%B8%20%EB%92%A4)%EC%9D%84%20%EC%B6%94%EC%B6%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
나는 ReferenceId="0128140321960O"
또한RelatedReferenceId="SWCC"
<FinancialTransfersInstruction xmlns="middleware.frk.com/Schemas/Onetis/1.0">
<SWIFTHeader DeliveryMethod="SWIFT" MessageType="202" OrigSendDate="2019-11-15" Receiver="SBOSUS3UIMS" ReferenceId="0207060050180O" Sender="TESTBIC" SenderName="TEST INVESTORS, INC" TransType="NEW"/>
<PortalHeader BusinessUnit="GTS"/> <Wires> <Wire Currency="USD" Id="20706s5018.0" RelatedReferenceId="CCPM" </Wire> </Wires>
<FinancialTransfersInstruction/></FinancialTransfersInstruction>
값을 추출하는 명령을 실행하면 참조도 제공됩니다. ReferenceId 태그 값만 필요합니다.
cat *.xml |grep -P -o -e '(?<=ReferenceId=").*?(?=")'
답변1
질문의 XML이 잘못되었습니다. 수정된 XML이 실제로 다음과 같다고 가정하면,
<?xml version="1.0"?>
<FinancialTransfersInstruction xmlns="https://middleware.frk.com/Schemas/Onetis/1.0">
<SWIFTHeader DeliveryMethod="SWIFT" MessageType="202" OrigSendDate="2019-11-15" Receiver="SBOSUS3UIMS" ReferenceId="0207060050180O" Sender="TESTBIC" SenderName="TEST INVESTORS, INC" TransType="NEW"/>
<PortalHeader BusinessUnit="GTS"/>
<Wires>
<Wire Currency="USD" Id="20706s5018.0" RelatedReferenceId="CCPM"/>
</Wires>
</FinancialTransfersInstruction>
이를 사용하여 xmlstarlet
XML을 구문 분석하고 적절한 속성 값을 추출할 수 있습니다.
xmlstarlet sel -t -v '//_:SWIFTHeader/@ReferenceId' bankfile.xml
0207060050180O