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

这个输出的问题是我最终得到了一个包含所有文档的庞大列表,并且在 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 错误,没有输入文件,我想我现在已经盯着屏幕看够了。

请帮忙。

我正在使用谷歌的 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 回答