0
votes

Ajoutez les éléments de 2 lignes en fonction de la condition de motif

Je veux ajouter 2 lignes en fonction d'un motif

J'ai cette table xxx

Qu'est-ce que je cherche à ajouter une colonne de 7 $ avec le premier élément commence avec 0 et si le 2 $ est "-" alors ajuster -1 à partir de 7 $ d'autre ajout +1 dans la 7 $ Comme ceci: xxx

j'ai écrit ce xxx

Le problème avec mon code est que si je supprimai le Pour la condition tourne la totalité de 2 $ en et la totalité de 7 $ est -1


0 commentaires

3 Réponses :


2
votes

Votre code ne fonctionne pas du tout. Il se plaint de quelques erreurs de syntaxe. En tout cas, je pense que vous avez omnuent le problème. Si je ne vous ai pas dit tort, la solution est plus simple:

awk 'BEGIN {v=0} {if ($2=="-") {v=v-1} else {v=v+1}; $7=v; print}'


1 commentaires

Fonctionne parfaitement!!! Merci beaucoup ... vous avez totalement raison. La solution était vraiment simple. Mon problème est que je suis nouveau dans le "club" alors je suis encore en train d'apprendre.



1
votes

Cela devrait être aussi simple que les suivants.

1       -1      513     1478        966     1       -1
2       -1      1594        2130        537     1       -2
3       +1      2171        2539        369     1       -1
4       -1      2587        3159        573     1       -2


3 commentaires

Ce n'est pas exactement la sortie souhaitée. Peut-être que je n'ai pas expliqué ma cible correctement. J'essaie de "convertir" les signes + - Ajoutez "un et" moins "et à chaque fois pour ajouter ou soustraire 1 respectivement de la 2 $. Mais merci vraiment de me répondre !!!


@Kgee, je pensais que ma sortie est la même que celle des échantillons d'échantillons, pourriez-vous s'il vous plaît faire le Lemme en savoir plus sur la même chose où cela n'a pas fonctionné.


Sûr! Votre code convertit en effet le + - au +1 -1 respectivement, mais il n'a pas ajouté les valeurs de 2 $ (la première valeur à la seconde au troisième etc.). En outre convertit les valeurs de 4 à - 4 $ (ajoutez des valeurs A à ma 4ème colonne) et ajoutez la première valeur de 4 $ à la suivante. En d'autres termes, je veux obtenir ce que vous avez fait dans les 4 $ aux 2 $ sans convertir toutes les valeurs à moins. Mais vraiment une fois de plus, merci de votre temps.



2
votes

Utilisation de l'astuce @ RavindersingH13

$ awk '{print $0 "\t" (c+=$2"1")}' file

1        -         513        1478          966        1        -1
2        -        1594        2130          537        1        -2
3        +        2171        2539          369        1        -1
4        -        2587        3159          573        1        -2


1 commentaires

fonctionne superfine, et c'est un code vraiment simple. J'ai édité des bits allumés alors que mon objectif final était d'ajouter les valeurs de 5 $ en même temps avec 2 $ et de votre code que je l'ai fait comme je le souhaite. ;-). Merci beaucoup!!!!