一种在Bash中转置文件的有效方法

前端之家收集整理的这篇文章主要介绍了一种在Bash中转置文件的有效方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个巨大的制表符分隔的文件格式化这样
X column1 column2 column3
row1 0 1 2
row2 3 4 5
row3 6 7 8
row4 9 10 11

我想使用只有bash命令(我可以写一个十行左右的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

但它很慢,似乎不是最有效的解决方案。我在this post看到了一个解决方案vi,但它仍然过慢。任何想法/建议/辉煌的想法? 原文链接:https://www.f2er.com/bash/392242.html

猜你在找的Bash相关文章