스크립트가 있습니다곱슬SMS를 SMS 게이트웨이로 보내고 응답으로 XML을 받는 명령입니다. 각 응답은 나중에 사용할 수 있도록 파일에 추가됩니다.xslt 프로세스csv를 만드는 과정입니다.
단일 응답은 다음과 같습니다.
<?xml version='1.0' encoding='ISO-8859-1' ?><REPLY><PARAMETER>OK</PARAMETER><LOGIN>SUCCESSFULL</LOGIN><PUSHAPI>ACTIVE</PUSHAPI><STAKEHOLDERID>OK</STAKEHOLDERID><PERMITTED>OK</PERMITTED><SMSINFO><MSISDN>xxxxxxxxxxxxx</MSISDN><SMSTEXT>Test+SMS+Check</SMSTEXT><CSMSID>113426778</CSMSID><REFERENCEID>2020050321383271896124009</REFERENCEID></SMSINFO></REPLY>
이제 스크립트가 실행될 때마다 <?xml version='1.0' encoding='ISO-8859-1' ?><REPLY>
반복되는 값이 있는 별도의 값 과 함께 동일한 응답을 추가합니다.</REPLY>
따라서 두 번째 실행 후 파일은 다음과 같습니다.
<?xml version='1.0' encoding='ISO-8859-1' ?><REPLY><PARAMETER>OK</PARAMETER><LOGIN>SUCCESSFULL</LOGIN><PUSHAPI>ACTIVE</PUSHAPI><STAKEHOLDERID>OK</STAKEHOLDERID><PERMITTED>OK</PERMITTED><SMSINFO><MSISDN>xxxxxxxxxxxxx</MSISDN><SMSTEXT>Test+SMS+Check</SMSTEXT><CSMSID>113426778</CSMSID><REFERENCEID>2020050321383271896124009</REFERENCEID></SMSINFO></REPLY><?xml version='1.0' encoding='ISO-8859-1' ?><REPLY><PARAMETER>OK</PARAMETER><LOGIN>SUCCESSFULL</LOGIN><PUSHAPI>ACTIVE</PUSHAPI><STAKEHOLDERID>OK</STAKEHOLDERID><PERMITTED>OK</PERMITTED><SMSINFO><MSISDN>xxxxxxxxxxxxx</MSISDN><SMSTEXT>Test+SMS+Check</SMSTEXT><CSMSID>113426778</CSMSID><REFERENCEID>2020050321383271896124009</REFERENCEID></SMSINFO></REPLY>
그 중에는 2 <?xml version='1.0' encoding='ISO-8859-1' ?><REPLY>
과 </REPLY>
.
하지만xslt 프로세스<?xml version='1.0' encoding='ISO-8859-1' ?><REPLY>
여러 합계를 처리할 수 없습니다.</REPLY>
<?xml version='1.0' encoding='ISO-8859-1' ?><REPLY>
그래서 모든 것을 제거하고 최종 처리 시 파일 시작 부분과 파일 끝 부분에 </REPLY>
를 유지하거나 추가 해야 합니다 .<?xml version='1.0' encoding='ISO-8859-1' ?><REPLY>
</REPLY>
그래서 내 파일이 처리되면xslt 프로세스두 번째 실행 후에는 다음과 같아야 합니다.
<?xml version='1.0' encoding='ISO-8859-1' ?><REPLY><PARAMETER>OK</PARAMETER><LOGIN>SUCCESSFULL</LOGIN><PUSHAPI>ACTIVE</PUSHAPI><STAKEHOLDERID>OK</STAKEHOLDERID><PERMITTED>OK</PERMITTED><SMSINFO><MSISDN>xxxxxxxxxxxxx</MSISDN><SMSTEXT>Test+SMS+Check</SMSTEXT><CSMSID>113426778</CSMSID><REFERENCEID>2020050321383271896124009</REFERENCEID></SMSINFO><PARAMETER>OK</PARAMETER><LOGIN>SUCCESSFULL</LOGIN><PUSHAPI>ACTIVE</PUSHAPI><STAKEHOLDERID>OK</STAKEHOLDERID><PERMITTED>OK</PERMITTED><SMSINFO><MSISDN>xxxxxxxxxxxxx</MSISDN><SMSTEXT>Test+SMS+Check</SMSTEXT><CSMSID>113426778</CSMSID><REFERENCEID>2020050321383271896124009</REFERENCEID></SMSINFO></REPLY>
<?xml version='1.0' encoding='ISO-8859-1' ?><REPLY>
그러면 파일에서 첫 번째 항목을 제외한 모든 항목을 삭제하고 </REPLY>
마지막 항목을 제외한 모든 항목을 삭제 하려면 어떻게 해야 합니까 ?
아니면 녹음을 위해 csv 또는 xlx를 만드는 다른 방법이 있습니까?
답변1
GNU sed를 사용하면 시작하기가 매우 간단합니다
sed 's/...//g2' file
GNU sed에서 general
( g
) 교체를 요구하고 숫자가 뒤따르면 모든 반복을 의미합니다.시작숫자가 대체됩니다.
sed 's@<?xml version='1.0' encoding='ISO-8859-1' ?><REPLY>@@g2' file
물론 이것은 label 을 변경하지 않습니다 </REPLY>
. 이는 다음을 수행합니다.
sed 's@</REPLY>@@g' file; echo '</REPLY>' >> file