【发布时间】:2014-08-07 07:37:28
【问题描述】:
我有一个程序在 bash 的 for 循环中处理多个数据文件。目前我需要将每个循环步骤输出到一个单独的文件,然后在最后再次处理所有这些文件以便将它们制成表格。我想避免通过文件执行此操作的步骤,并使用基本的 shell 命令来执行此操作。看起来这应该是可能的,但我已经碰壁了。以下是说明粗略过程的示例:
#create some example data
seq 1 100 > results-all
split -l 10 -d -a 1 results-all results-
#process the data
for RESULT in `seq 0 9`; do tail -n-5 results-$RESULT > results-clean-$RESULT; done; paste results-clean-{0..9}
请记住,这是一个示例,实际上我正在对这些输入文件进行更多处理,因此将该步骤移至其他地方/以某种方式移除的过于简化的解决方案在实践中不太可能起作用(这是 只是一个例子)。当我尝试更改此代码以删除通过文件的中间步骤时,我失去了粘贴以将输入格式化为列的能力。因此:
for RESULT in `seq 0 9`; do tail -n-5 results-$RESULT; done | paste - - - - - - - - - -
现在输出是按行而不是按列的。我可以转置这些数据,但似乎没有外壳工具可以做到这一点。我可以编写代码对此进行转置(或从 Stack Overflow 复制一个示例来执行此操作),但似乎应该有一种方法可以做到这一点而无需求助。
非常感谢任何帮助。
【问题讨论】: