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