0
votes

AWK comparer deux éléments dans la même ligne avec une expression régulière

J'ai des fichiers très longs où je dois comparer deux numéros de chromosome présents dans la même ligne. J'aimerais utiliser AWK pour créer un fichier qui prend uniquement les lignes où les numéros de chromosome sont différents.

Voici l'exemple de mon fichier: p>

    1   A[12:3456789[

awk

0 commentaires

3 Réponses :


3
votes
$ awk -F'[][]' '$1+0 != $2+0' file
    1   A[12:3456789[
    2   etc...

4 commentaires

Hey, pourquoi vous lancez-vous à un numéro ici?


Merci d'avoir répondu. Quelle partie du code dois-je modifier si j'ai plusieurs colonnes entre ces deux colonnes?


Vous êtes les bienvenus. Publiez une question de suivi avec quelles que soient vos différentes données.


@ hek2mgl en utilisant [ et ] car le FS $ 1 est 1 a et 2 $ est 12: 3456789 Donc, en ajoutant zéro, je désactive tout après les principaux chiffres et enlever des blancs d'avancement de chacun.



3
votes

Ceci nécessite GNU AWK pour l'argument Match () Code> Fonction:

gawk 'match($2, /[][]([0-9]+):/, a) && $1 != a[1]' file


0 commentaires

0
votes

Merci encore pour les différentes réponses.

Voici comment mes données ressemblent à plusieurs colonnes: xxx

ma question est la suivante: comment puis-je modifier le code précédent , quand j'ai plusieurs colonnes?


2 commentaires

Dans awk, 1 $ est la valeur de la première colonne, 2 $ est la valeur de la deuxième colonne, etc. Avec ces données, vous souhaitez extraire le nombre de chromasome de la cinquième colonne.


De plus, ces données sont pertinentes pour votre question: au lieu d'avoir publié une réponse (ce que cela ne doit pas) modifier votre question et mettre ces informations là-bas