0

私は、開いている xml ドキュメント内の情報を解析し、スクリプトからの出力を解析して csv 出力を提供するスクリプトに取り組んでいます。

最後のハードルで立ち往生しています。

find /media/path/to/files -type f -iname '*.xlsx' -exec perl parseXML.py {} \; \
    | grep -v 'Document\ name\|creator\|lastModified\|Printed\|created\|modified' \
    | tr '\n' '.'; echo \n \
    >> list.csv

この出力の問題は、すべてのドキュメントに対して 1 つの膨大なリストが作成され、それを python または perl で並べ替えると、私の知識レベルを超えて表示されることです。

sed を使用して、オフセットからこれが発生するのを回避する方法があることを望んでいました

(find /media/E01880-0-CH5-W001/Working/E01880-4-CH5-E001/ED/ -type f -iname '*.xlsx' -exec perl parseXML.py {} \; | grep 'Document\ name\|creator\|lastModified\|Printed\|created\|modified' | tr '\n' '.'; echo \)n >> list.csv

残念ながら、これは変更された情報を含む行を削除するだけです。

最後に今晩、sedといくつかの正規表現を使用して出力を変更しようとしました

cat PleaseWork.csv | sed  -i 's/modified[^"\r\n]*\./&\\n/g' >> NewFile.csv

理論上の構文では、変更された文字とピリオドまでの文字を一致する式と新しい行に置き換える必要がありますが、入力ファイルがない sed エラーを受け取りました。今のところ、画面を十分に見つめていると思います。

助けてください。

Google の snortdlp コードを使用しています。

http://snortdlp.googlecode.com/svn-history/r115/trunk/src/python/read_open_xml.pl

4

1 に答える 1

1

あなたの質問を正しく解釈すると、「ドキュメント名」、「作成者」などに一致するすべてのファイルの行全体 (改行ではない) を出力し、行の行全体 (および改行) を出力しようとしています。 「変更された」に一致します。grep をスキップして、代わりに awk を使用します。

awk '/Document name|creator/{printf "%s.", $0} /modified/'

(わかりやすくするために一致を短縮しました。必要に応じて他のタグを追加してください。)

于 2012-12-04T21:46:45.187 に答える