我正在开发一个脚本,该脚本解析open 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错误没有输入文件,我想我现在已经足够盯着屏幕了。
请帮忙。
我正在使用google的snortdlp代码:
http://snortdlp.googlecode.com/svn-history/r115/trunk/src/python/read_open_xml.pl
答案 0 :(得分:1)
如果我正确地解释了您的问题,您正在尝试输出与“文档名称”,“创建者”等匹配的所有文件的整行(但不是换行符),并打印整行(和换行符) )对于匹配'modified'的行。只需跳过grep并使用awk:
awk '/Document name|creator/{printf "%s.", $0} /modified/'
(为了清晰起见,我缩短了比赛时间 - 根据需要添加其他标签。)