Linuxはファイルから文の出現を取り除き、追加の開始と終了を追加します。

Linuxはファイルから文の出現を取り除き、追加の開始と終了を追加します。

スクリプトがありますカール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>

したがって、2回目の実行後のファイルは次のようになります。

<?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プロセス2回目の実行後は、次のようにする必要があります。

<?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でgeneralg)の置き換えを要求し、数字が続く場合はすべての反復を意味します。スタート数字が置き換えられます。

sed 's@<?xml version='1.0' encoding='ISO-8859-1' ?><REPLY>@@g2' file 

もちろん、これはラベルを変更しません</REPLY>。これは次のことを行います。

sed 's@</REPLY>@@g' file; echo '</REPLY>' >> file

関連情報