我正在开发一个脚本,该脚本解析打开的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[^"rn]*./&\n/g' >> NewFile.csv
理论上,语法应该用匹配的表达式和新行替换修改后的字符和任何字符,直到一个句号,但我收到了一个sed错误,没有输入文件,我想我现在已经盯着屏幕看够了。
请帮忙。
我正在使用谷歌的snortdlp代码:
http://snortdlp.googlecode.com/svn-history/r115/trunk/src/python/read_open_xml.pl
如果我正确解释了您的问题,您将尝试为所有匹配"Document name"、"creator"等的文件输出整行(而不是换行),并为匹配"modified"的行打印整行(和换行)。只需跳过grep并使用awk即可:
awk '/Document name|creator/{printf "%s.", $0} /modified/'
(为了清晰起见,我缩短了匹配时间——根据需要添加其他标签。)