我有几千个文件,每个文件只包含一个非常长的行。
我想将它们全部转换为一个文件,每行一个条目在ID字段中分割,我使用了一些文件,但是在数百个文件上花费的时间太长而且似乎在数千个文件上崩溃。寻找更快的无限制方式。
(find -type f -name '*.xml' -exec cat {} \;) | awk '{gsub("ID","\nID");printf"%s",$0}'
我也试过了..
(find -type f -name '*.xml' -exec cat {} \;) | sed 's/ID/\nID/g'
我认为问题是尝试使用替换而不是插入或使用太多内存。
由于
答案 0 :(得分:2)
我无法使用数千个文件对其进行测试,但是在使用cat
处理它们之前,不是将awk
所有数据都放入内存中,请尝试使用其中一些文件运行awk
时间,如:
find . -type f -name "*.xml*" -exec awk '{gsub("ID","\nID");printf"%s",$0}' {} +
答案 1 :(得分:1)