XMLファイル内の電子メールアドレスのスペースを繰り返し検索して置き換える

XMLファイル内の電子メールアドレスのスペースを繰り返し検索して置き換える

既存の環境を新しい環境に移行しています。以前の環境では、電子メールアドレスの先頭または末尾にスペースがある可能性があります。しかし、新しい環境ではこれは許可されません。

サンプルファイル:

<PEOPLE objectclass="[objPeople, objlwsnRMResource, top]" id="jdoe"> <ID><![CDATA[jdoe]]></ID> <ALLOWJOBQUEUE><![CDATA[N]]></ALLOWJOBQUEUE> <GROUP><![CDATA[ESS Employee]]></GROUP> <LASTNAME><![CDATA[Doe ]]></LASTNAME> <NAME><![CDATA[John Doe]]></NAME> <FIRSTNAME><![CDATA[John ]]></FIRSTNAME> <EMAIL><![CDATA[[email protected] ]]></EMAIL> </PEOPLE>

ここでxmlタグがあることがわかります。 LASTNAME、FIRSTNAME、EMAILタグにスペースがある場合があります。ただし、名前タグ「John Doe」など、名前の間にスペースがあることは望ましくありません。私はそのまま維持したい。

ファイルの特定のタグ名の後のスペースを削除し、ファイルをその場所に保存したり、別のファイルにコピーしたりするにはどうすればよいですか。

望ましい結果:

<PEOPLE objectclass="[objPeople, objlwsnRMResource, top]" id="jdoe"> <ID><![CDATA[jdoe]]></ID> <ALLOWJOBQUEUE><![CDATA[N]]></ALLOWJOBQUEUE> <GROUP><![CDATA[ESS Employee]]></GROUP> <LASTNAME><![CDATA[Doe]]></LASTNAME> <NAME><![CDATA[John Doe]]></NAME> <FIRSTNAME><![CDATA[John]]></FIRSTNAME> <EMAIL><![CDATA[[email protected]]]></EMAIL> </PEOPLE> <PEOPLE objectclass="[objPeople, objlwsnRMResource, top]" id="jdoe2"> <ID><![CDATA[jdoe2]]></ID> <ALLOWJOBQUEUE><![CDATA[N]]></ALLOWJOBQUEUE> <GROUP><![CDATA[ESS Employee]]></GROUP> <LASTNAME><![CDATA[Doe]]></LASTNAME> <NAME><![CDATA[Jane Doe]]></NAME> <FIRSTNAME><![CDATA[Jane]]></FIRSTNAME> <EMAIL><![CDATA[[email protected]]]></EMAIL> </PEOPLE>

このようなことをした人はいますか?

答え1

sed以下を使用して、シーケンスの前のスペースを削除できます]]

sed 's/ *]]/]]/g' file.xml

ここで、正規表現 ""はリテラル" "が続くゼロ個以上の*]]空白(" ")(" ")と一致します。その後、一致するものは ""に置き換えられます。結果の書き込み*]]]]標準出力、適切な方法でリダイレクトできます。

適切なバージョンがある場合は、「代わりに」を使用して表示することをsed選択できます。\sスペース文字(つまり、スペースだけでなくタブや他の印刷できない文字も含まれます)

関連情報