相关疑难解决方法(0)

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

我有一个巨大的制表符分隔文件格式如下

X column1 column2 column3
row1 0 1 2
row2 3 4 5
row3 6 7 8
row4 9 10 11
Run Code Online (Sandbox Code Playgroud)

我想仅使用bash命令以有效的方式转置它(我可以编写十个左右的Perl脚本来执行此操作,但执行速度应该比本机bash函数慢).所以输出应该是这样的

X row1 row2 row3 row4
column1 0 3 6 9
column2 1 4 7 10
column3 2 5 8 11
Run Code Online (Sandbox Code Playgroud)

我想到了这样的解决方案

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
Run Code Online (Sandbox Code Playgroud)

但它很慢,似乎不是最有效的解决方案.我在这篇文章中看到了vi的解决方案,但它仍然过慢.有什么想法/建议/精彩的想法吗?:-)

unix bash parsing transpose

105
推荐指数
12
解决办法
11万
查看次数

标签 统计

bash ×1

parsing ×1

transpose ×1

unix ×1