Shell脚本中的文本转置

时间:2017-05-03 02:23:03

标签: bash shell unix

需要你的帮助。寻找可以将以下输入文件转换为所需输出的shell脚本。我们使用Bash shell

输入文件(.txt)包含:

,,,,Jan_1,Jan_2,Jan_3,Jan_4,Jan_5,.........Jan_30,Feb_1,Feb,2...Dec_31
a,b,c,d,88,89,91,.........(365 numbers)
e,f,g,h,34,23,17,..........(365 numbers)
i,j,k,l,52,63,86,.........(365 numbers)

预期产出:

a,b,c,d,Jan_1,88
a,b,c,d,Jan_2,89
a,b,c,d,Jan_3,91
....
....
a,b,c,d,Jan_31,656
a,b,c,d,Feb_1,23
....
....
a,b,c,d,Dec_31,656
e,f,g,h,Jan_1,34
e,f,g,h,Jan_2,23
e,f,g,h,Jan_3,17
...
...
...
e,f,g,h,Aug_3,454
....
...
e,f,g,h,Dec_31,878    
i,j,k,l,Jan_1,52
i,j,k,l,Jan_2,63
i,j,k,l,Jan_3,86
 .....
 ....
 i,j,k,l,Dec_31,23

输入文件中的记录数约为13k。 请指教。

我想将第一行存储到一个数组中,然后将前四列作为矩阵考虑,然后进行交叉乘法以获得转置效果。

/

/ stored the first line in an array  array1
// From second line using this to get the matrix
while IFS=, read -ra arr; do


    ## Unable to multiply this arr with array1

     echo ${arr[@]:0:4}

done < 'working file.

TXT&#39;

1 个答案:

答案 0 :(得分:0)

var parseDate = d3.time.format("%Y-%m-%d %H:%M:%S"); data.forEach(function(d) { d.date = parseDate.parse(d.datestr); }); 可能有帮助

Awk