我有一个文本文件(标签分隔),由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
答案 0 :(得分:1)
这个想法如何(使用awk挑选列数据,使用临时输出文件来保存数据):
rearrange.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