我已将bash管道中的数据源从cat ${file}
更改为cat file_${part_number}
,因为预处理导致${file}
被截断为2GB,所以拆分输出消除了预处理问题。然而,在测试这种变化时,我无法弄清楚如何让Bash继续为我用来测试管道的一些基本操作采取相同的行动。Bash管道和Shell扩展
我原来的管道是:
cat giantfile.json | jq -c '.' | python postprocessor.py
与原来的管道,如果我测试的变化postprocessor.py
或预处理程序,我想只是测试我的变化有几个项目从giantfile.json
我可以使用head
和tail
。像这样:
cat giantfile.json | head -n 2 - | jq -c '.' | python postprocessor.py
cat giantfile.json | tail -n 3 - | jq -c '.' | python postprocessor.py
新管道修复该问题的预处理器:
cat file_*.json | jq -c '.' | python postprocessor.py
这工作得很好,因为每个文件都被输出最终会。但是我不想等待每个测试5-10分钟。我试着用头部的前两行输入进行测试。
cat file_*.json | head -n 2 - | jq -c '.' | python postprocessor.py
猛砸坐在那里,远远超过它应该工作,所以我尝试:
cat file_*.json | head -n 2 - | jq -c '.'
而且我的问题是清楚的。 Bash正在输出所有文件的内容,就好像磁头不在那里一样,因为每个文件现在都有1行数据。我从来没有必要用bash来做这件事,而且我很尴尬。
为什么没有击行为这种方式,和如何我重写我的小bash命令管道的工作它曾经的样子,让我选择的第一个/最后ñ线数据与测试工作?
你钉了它。事实证明,我在预处理过程中有一个步骤,从它所处理的文件末尾剥离了直线。这不是只有一个文件的问题。但是当它是每个文件的一行数据时会引起我的问题。 – Techdragon