1

我有一个包含 17 列的文本文件(制表符分隔)。我想以这种方式改变这种结构。将第 1 列保存到第 6 列,当然直到文件末尾,然后将第 7 列到第 16 列(我可以去掉 17 列)添加到彼此下方,然后为每一列重复从 1 到 5 的每列我补充说。这意味着我还需要添加一个具有相同数字的额外列,直到下一个添加的开始,以便跟踪我附加的列并查看它从哪一行开始。

希望这足够清楚。

感谢您宝贵的时间和支持。

原来的

179    1   AA     19.50    30.00  1.0000  2.0000  3.0000 ...  
180    1   BB     19.75    30.00  4.0000  5.0000  6.0000 ...  
230    1   CC     32.25    30.00  7.0000  8.0000  9.0000 ...  

需要

179    1  1 AA     19.50     30.00  1.0000    
180    1  1 BB     19.75     30.00  4.0000    
230    1  1 CC     32.25     30.00  7.0000  
179    1  2 AA     19.50     30.00  2.0000   
180    1  2 BB     19.75     30.00  5.0000    
230    1  2 CC     32.25     30.00  8.0000   
179    1  3 AA     19.50     30.00  3.0000    
180    1  3 BB     19.75     30.00  6.0000    
230    1  3 CC     32.25     30.00  9.0000   
4

1 回答 1

1

这个想法怎么样(使用 awk 来挑选列数据,使用临时输出文件来保存数据):

重新排列.awk:

{
   for (i=6; i<=NF; ++i) {
      print $1, $2, (i-5), $3, $4, $5, $i > "temp_output"i".txt"
   }
}

然后这将在脚本中使用:

awk -f rearrange.awk < input.txt
cat temp_output*.txt > output.txt
rm temp_output*.txt
于 2012-06-14T09:07:24.697 回答