既存の環境を新しい環境に移行しています。以前の環境では、電子メールアドレスの先頭または末尾にスペースがある可能性があります。しかし、新しい環境ではこれは許可されません。
サンプルファイル:
<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
スペース文字(つまり、スペースだけでなくタブや他の印刷できない文字も含まれます)