MATLABで呼び出すか、コマンドラインから実行できるテキスト電子メールファイルを解析するスクリプトを実行しています。スクリプトは次のようになります。
#!/bin/bash
MYSED=/opt/local/bin/gsed
"$MYSED" -n "/X-FileName/,/*/p" | "$MYSED" "/X-FileName/d" | "$MYSED" "/\-Original Message\-/q"
cat message_file | ./parser.sh
ターミナルウィンドウで実行すると、解析されたテキストファイルが表示されます。MATLABでコマンドを使用して同じことを行うとsystem
、同じ解析済みテキストの後にエラーメッセージが表示されることがあります。
cat: stdout: Broken pipe
sed
コマンドの代わりにコマンドを使用していたときcat
、同じエラーメッセージが表示されていました。これは、解析しているファイルの1%で発生する可能性があります。ほとんどの場合、Original Message
行の後に多くのファイルが削除される大きなファイルです。「元のメッセージ」の後のすべてを削除する最後のパイプを含めなくても、エラーは発生しません。
できれば猫からのエラーメッセージを抑えたいです。理想的には、MATLABを介してスクリプトを実行するとエラーが発生するのに、ターミナルで実行するとエラーが発生しない理由を理解したいと思います。大きなファイルで発生する傾向があるので、メモリの制限に関係していると思いますが、「壊れたパイプ」は漠然としたエラーメッセージであり、確信が持てません。どちらの問題についてもヒントをいただければ幸いです。
おそらくMATLABの外部でスクリプトを実行し、処理されたファイルを保存することもできますが、一部のファイルは大きいため、現時点では複製したくないと思います。