0
votes

Comment utiliser Grep et sed simultanément à l'aide de tuyaux

J'ai 2 fichiers

fichier 1 xxx

fichier 2 xxx

je veux supprimer 2 lignes (même ligne et ligne suivante) dans File2 dont le motif correspond aux premiers mots de colonne du 1er fichier xxx


8 commentaires

Bienvenue à cela, bon que vous ayez montré votre tentative de code. Veuillez effectuer vos échantillons dans des balises de code car ils ne sont pas clairs.


@ Ravindersingh13 Je suis biologiste, je ne sais pas comment décrire le problème correctement, merci


Je n'ai pas dit d'explication, j'ai seulement demandé à envelopper vos échantillons avec des balises de code.


Il suffit de vous demander, n'hésiez pas au > devant Trinité ?


@ Kvantour Je comprends que vous êtes biologiste, j'ai enlevé> Symbole pour rendre ma question plus générale, de sorte que je puisse obtenir une réponse rapidement


@Abhilash Il y a déjà de nombreuses questions de fichier FASTA ici. La disponibilité du signe > rend son traitement plus facile. En supprimant le panneau, vous avez rendu la question plus générique, mais cela signifie également que la complexité de la réponse est plus élevée. Si vous ajoutez le signe, nous pouvons vous aider avec une réponse bien réglée qui, après une modification mineure, pourrait vous aider dans d'autres tâches de traitement. Les réponses sont maintenant moins utiles pour vous.


@ Kvantour Merci, je ne suis pas au courant que les requêtes liées à la bioinformatique peuvent également être posées ici


@To_All_USERSERS qui voient cette réponse Le fichier 2 est généralement FASTA Fichier et File1 est contaminant.txt de NCBI. Donc, il suffit d'éditer le fichier1 en supprimant la ligne d'en-tête et un autre texte. Ensuite, utilisez cette commande SED "$ (CUT -F1 FILE1 | SED 'S @. @ / & / {N; D} @')" Fichier2 >> Edité.fasta Référence: Kamilcuk Réponse Merci à Kamilcuk


3 Réponses :


0
votes

Je ferais cela avec la substitution de processus comme: xxx

La raison de la délimitation des nullbytes plutôt que des lignes neuves est parce que c'est généralement le meilleur moyen.

EDIT: Mis à jour pour citer les caractères spéciaux avec \ SO SED ne fonctionnera pas dysfonctionnement.


0 commentaires

1
votes

Si le champ n'a pas de caractères spéciaux dans le premier champ, comme . ou / ou [ ou ( (code > ou \ ou des caractères spéciaux Regex, votre idée n'est en réalité pas si mauvaise: xxx

  • Cut -D '' -F1 File1 - Extraire premier champ de File1
  • | sed
    • . * - remplacer quelque chose. c'est à dire. le premier champ de fichier1
    • / & / {n; d} - le & est substitué pour l'ensemble de ce que nous remplaçons. Donc pour le premier champ. Donc, il devient / / {n; d}
    • puis enveloppez-le autour de sed "" file2

      Non. Caractéristique connue, vous pouvez utiliser un autre caractère pour / regex / regex comme \! regex! . Ci-dessous j'utilise ~ : xxx

      Si vous avez cependant des caractères spéciaux sur le premier champ, alors si vous ne vous souciez pas du tri: Vous pouvez remplacer deux lignes dans File2 pour une seule ligne avec un séparateur magique (j'ai choisi ! ci-dessous), puis triez-le et trier le fichier1, puis juste rejoindre . Le -v2 fait rejoindre sortie lignes non atteintes de second fichier - c'est-à-dire. non appariés de lignes. Après cela, restaurer la nouvelle ligne, en remplaçant le séparateur magique ! pour une nouvelle ligne: xxx

      si la sortie doit être triée comme dans File2, vous Les lignes numériques peuvent-elles dans File2 et résoudre la sortie sur les numéros de ligne: xxx

      Testé sur RÉP REPL


1 commentaires

SED "$ (Cut -D '' '-F1 File1 | SED' s @. * @ / & / {n; d} @ ')" File2 Cette solution est plus que suffisante pour moi. Merci kamilcuk. Je suis extrêmement heureux d'obtenir de l'aide d'un développeur. Merci beaucoup à nouveau



1
votes

Je ferais quelque chose comme ça avec un awk, à moins que File1 ne soit vraiment vraiment vraiment énorme: xxx pré>

entrée: p>

fichier1 p> xxx PRE>

FILE2: P>

TRINITY_DN9856_c0_g1_i1 len=467 path=[0:0-466]
GATGCGGGCCAATATGAATGTGAGATTACTAATGAATTGGGGACTAAAAA
TRINITY_DN9842_c0_g1_i1 len=208 path=[0:0-207]
AAGTAATTTTATATCACTTGTTACATCGCAATTCGTGAGTTAAACTTAAT
TRINITY_DN9897_c0_g1_i1 len=407 path=[0:0-406]
AACTTTATTAACTTGTTGTACATATTTATTAATGCAAATACATATAGAG  
TRINITY_DN9803_c0_g1_i1 len=795 path=[0:0-794]
AACTAAGACAAACTTCGCGGAGCAGTTAGAAAATATTACAAGAGATTTG


0 commentaires