2012-06-14 4 views
1

J'ai un fichier texte (séparé par des tabulations) composé de 17 colonnes. Je voudrais changer cette structure de cette façon. Conserver la colonne de 1 à 6, jusqu'à la fin du fichier bien sûr, et ajouter la colonne de 7 à 16 (je peux me débarrasser du 17) l'un en dessous de l'autre et ainsi répéter tous ceux de 1 à 5 pour chaque colonne J'ai ajouté. Cela signifie que je devrai également ajouter une colonne supplémentaire avec les mêmes numéros jusqu'au prochain démarrage ajouté, afin de garder une trace de la colonne que j'ai ajouté et voir à quelle ligne il commence.shell scripting: réorganiser les colonnes

Espérons que cela soit suffisant.

Merci pour votre précieux temps et de soutien.

originale

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 ... 

nécessaire

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

Peut-être que vous pouvez montrer quelques exemples d'entrée et de sortie? –

Répondre

1

Que diriez-vous cela pour une idée (en utilisant awk pour choisir les données de la colonne, en utilisant les fichiers de sortie temporaire pour contenir les données):

réorganiser.awk:

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

Ensuite, cela serait utilisé dans un script:

awk -f rearrange.awk < input.txt 
cat temp_output*.txt > output.txt 
rm temp_output*.txt