X column1 column2 column3
row1 0 1 2
row2 3 4 5
row3 6 7 8
row4 9 10 11
我希望您能用bash命令高效地进行转换(我可以编写大约10行的Perl脚本来完成,但执行速度应该比原生的bash函数慢)。因此输出应该如下所示:
X row1 row2 row3 row4
column1 0 3 6 9
column2 1 4 7 10
column3 2 5 8 11
我想到了这样一个解决方案。
cols=`head -n 1 input | wc -w`
for (( i=1; i <= $cols; i++))
do cut -f $i input | tr $'\n' $'\t' | sed -e "s/\t$/\n/g" >> output
done
但是这种方法很慢,似乎不是最有效的解决方案。我在这篇文章中看到了一个针对vi编辑器的解决方案,但仍然很慢。有什么想法/建议/创意吗? :-)