ログに記録されているサーバー間でファイル転送を行っています。これらは最終的にデータベースにアップロードする必要があるため、エラーをチェックするために前処理しています。各ログ ファイル エントリは転送を表しており、次の形式になっています。
key1=value1 key2=value2
合計 16 フィールド。名前にスペースが含まれるファイルを誰かが転送した場合を除いて、ほとんどの転送は問題ありません。これは私の処理を台無しにします。なぜなら、私は perl スクリプトでスペースに対して split を呼び出すだけだからです。例:
DATE=20130411140806.384553 HOST=somehost PROG=someserver NL.EVNT=FTP_INFO START=20130411140806.384109 USER=someuser FILE=/extended_path/Wallpapers Folder.ico BUFFER=98720 BLOCK=262144 NBYTES=0 VOLUME=/ STREAMS=2 STRIPES=1 DEST=[0.0.0.0] TYPE=STOR CODE=226
これは、「Wallpapers」と「Folder.ico」の間にスペースがある一例です。それを説明し、それらすべてのキーと値のペアを分割できる正規表現を設計する方法はありますか? それを行う正規表現の方法がない場合、それを処理する他の方法を提案してもらえますか?
私の目的は、これらのスペースを何も置き換えない (つまり、スペースを削除する) またはアンダースコアに置き換えて、データベースにロードするスクリプトを実行するときに、単一のスペースで分割するだけで問題が発生しないようにすることです。ちなみに、私はこれらすべてを行うためにperlを使用しています。