2010-07-27 7 views
1

Salut j'ai en tant que fichier texte ci-dessousComment puis-je insérer une colonne dans une entrée séparée par une virgule numérique?

entrée

326783,326784,402 
326783,0326784,402 
503534,503535,403 
503534,0503535,403 
429759,429758,404 
429759,0429758,404 
409626,409627,405 
409626,0409627,405 

369917,369916,402 
369917,0369916,403 

je veux convertir comme ci-dessous

état:

1) colonne de fichier d'entrée 3 et la colonne 1 devrait être être même chose pour 326784 et 0326784 et ainsi de suite

2) s'il est différent comme le fichier d'entrée ci-dessus dernier cas alors il devrait b e imprimé en dernière ligne

sortie doit être

326783,326784,0326784,402 
503534,503535,0503535,403 
429759,429758,0429758,404 
409626,409627,0409627,405 
369917,369916,402 
369917,0369916,403 

J'utilise la plate-forme de solaris

s'il vous plaît aidez-moi

+3

Quelle langue avez-vous essayé. S'il vous plaît poster le code que vous avez écrit jusqu'à présent. Hm, il semble qu'ils sont des questions différentes, désolé –

+1

Même utilisateur, question similaire, même titre: http://stackoverflow.com/questions/3335729/unix-programming – Abel

+0

Comment peux-tu savoir. Suggestion: utilisez un titre qui reflète la question (ok, juste changé le titre pour vous, peut-être que cela aide). Jetez un oeil ici http://stackoverflow.com/faq – Vladimir

Répondre

0

Je ne comprends pas la logique de votre calcul, mais quelques conseils généraux : l'outil Unix awk peut faire de tels calculs. Il comprend les fichiers séparés par des virgules et vous pouvez l'obtenir pour afficher d'autres fichiers séparés par des virgules, manipulés par votre logique (que vous devrez exprimer en syntaxe awk).

Ceci est, si je comprends bien, la façon unix de le faire. La façon dont je le ferais (être un non-expert sur awk et juste le mentionner pour l'exhaustivité;) serait d'écrire un petit script python. vous voulez

  • ouvrir une entrée et un fichier de sortie
  • obtenir chaque ligne du fichier d'entrée
  • analyser les entiers
  • effectuent votre logique
  • entiers d'écriture à votre fichier de sortie

non python-like code:

f_in = open("input", "r") 
f_out = open("output", "w") 
for line in f_in.readlines(): 
    ints = [int(x) for x in line.split(",")] 
    f_out.write("%d, %d, %d\n" % (ints[0], ints[1], ints[0]+ints[1])) 
f_in.close() 
f_out.close() 

Ici, la logique est dans la ligne f_out.write (...) (cet exemple de sortie de la première, la deuxième et la somme des deux nombres entiers d'entrée)

Vous pouvez vérifier si vous avez un Interprète Python à portée de main en tapant simplement python et en voyant ce qui se passe. Si c'est le cas, enregistrez votre code dans something.py et commencez avec "python something.py"

+0

en regardant à nouveau votre exemple, il semble que la logique de l'autre côté est nécessaire. ce qui pourrait faire de Python le choix le plus viable de toute façon (mais encore une fois, ne peut pas vraiment en dire beaucoup sur awk, mais pense qu'il est conçu pour être basé sur une ligne ou faire des choses simples comme la sommation) – Nicolas78

Questions connexes