-2
votes

Comment supprimer les nouvelles lignes de tableau et ajouter un élément au début de celui-ci à Perl?

Tout d'abord, je dois m'excuser d'avoir modifié mon poste initial. Mais après que je fournisse mon code, j'ai fait la question floue.

Donc, j'ai ce tableau (@start_cod) contenant des lignes séparées par / n comme suit: xxx

Je dois supprimer les nouvelles lignes et ajouter "> texte" Seulement au début de la matrice, comme suit: xxx

J'ai essayé: xxx

J'ai essayé aussi avec chomp xxx

et xxx

mais je reçois xxx

Toute suggestion sur Comment gérer cela dans la programmation Perl?

Voici mon code qui fonctionne 100%. xxx

fichier d'entrée: xxx

sortie après Perl exécuter xxx < p> sortie souhaitée: xxx


12 commentaires

Pourriez-vous s'il vous plaît Modifier Votre question et ajoutez le code sous forme de exemple de reproductible minimal ?


impression "> text @start_cod"; fonctionne bien, sauf formation, j'utiliserais imprimer "> text \ n", @ start_cod, "\ n";


@Toto je ne cherche pas ça, mais merci de votre réponse.


@Robert Je n'ai pas téléchargé mon script parce que cela fonctionne correctement, et je veux manipuler le tableau "Stard_Cod" à la fin de celui-ci, mais si vous pensez que je serais utile que je ferai cela.


@Kgee tout bon. Je cherchais un petit programme complet qui montre le problème, de sorte que je puisse simplement l'exécuter, puis essayez de le réparer. Si l'analyse fonctionne, laissez cela. Je pense avoir compris ce que vous demandiez (voir la réponse ci-dessous), mais vous auriez pu obtenir une réponse plus rapide avec un exemple de reproductible minimal < / a>. Voir aussi Comment demander .


Je vois .... j'ai essayé de le garder simple :-)


@Kgee: Qu'en est-il de poussant votre @start_cod en haut d'une en-tête, comme: mon @start_cod = ('aaaaaaaaaaaaaaaaaaacacacacaacacaacatatatatatatatataTtat mon @Outputwithheader = ("Texte> \ n"); pousser (@Outputwithheader, @start_cod); Imprimer @Outputwithheader;


@barbasa merci pour la réponse mais elle ne fonctionne pas, elle imprime aaaaaaaaaaaaaaaaaaaaaa> Texte (Tun Newline) CACACACACAACACCACACAAC> Texte (TUNWLINE) ... Aattatatatetattatattatattattat (alors Newline) :-(


Lorsque vous dites "ça ne marche pas", nous ne savons pas ce que "ça" est. Vous devez mettre à jour votre question avec le code complet que vous exécutez réellement.


@briandfoy maintenant je me suis rendu compte que c'était une grosse erreur de mon côté pour fournir mon code. J'ai fait ma question si peu claire. Je vais éditer ma question à nouveau et je vais écrire ma question à partir de zéro.


Ce n'est pas une erreur de fournir votre code. Nous ne pouvons pas aider si nous ne pouvons pas voir ce que vous faites. Lire les liens @RObert fournis.


Vous devriez rouler cette question et lire attentivement ce que j'ai posté. Vous n'avez pas de tableau avec ces éléments.


3 Réponses :


2
votes

Si je comprends votre question correctement, cela devrait faire ce que vous voulez faire ce que vous voulez:

>text
aaaaaaaaaaaaaaaaaaacacacacacaacaccacaacaattatatattataattatatttat


6 commentaires

Tout d'abord, merci beaucoup pour votre réponse. Ce n'était pas exactement ce que je cherchais comme la sortie souhaitée est la suivante:> Texte (\ n) aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAacacacaAacacaacatatatatatatatataTataTaTatattatatatatatatat Ttat (enlever toutes les lignes neuves)


@Kgee Ok, j'ai ajusté la réponse. C'était la raison de demander un exemple de reproductible minimal - il montre clairement ce que vous faites, et quoi vous vous attendez. Enregistre quelques tours de commentaire Ping Pong.


NON continue de continuer à ajouter> texte et nouvelle ligne dans chacune de mes lignes OUPOUT. :-( Je crois que les nouvelles lignes doivent être supprimées, puis ajouter le> text \ n dans la première ligne uniquement


Nous n'avons aucune idée de ce que vous faites ou de la manière dont vous obtenez votre sortie. Mettez à jour votre question avec le code réel.


@briandfoy i Ajouter mon code entier lorsque j'ai demandé à faire, et j'ai écrit ce que j'ai fait. Im essayant de convertir @start_cod; qui a ces valeurs aaaaaaaaaaaaaaaaaaacacacacacaacaccacaacaattatatattataattatat ttat à> Texte aaaaaaaaaaaaaaaaaaacacacacacaacaccacaacaattatatattataattatat ttat Dans la commande Linux je fournis ci-dessus, je suis ce que je veux obtenir, mais à Perl je veux pouvoir le faire.


Le problème initial est qu'il n'y a rien dans le tableau. Regardez ce premier Split ligne. ;)



-1
votes

La description manque de clarté du problème.

En regardant la sortie souhaitée, le code suivant me vient à l'esprit. S'il vous plaît voir si cela fait ce que vous recherchez.

même en regardant votre code, il n'est pas clair ce que vous essayez de faire - une partie du code n'a pas beaucoup de sens. < Pré> xxx


4 commentaires

On m'a demandé de fournir un code afin d'obtenir des réponses même si je savais que je vais confondre les lecteurs. Alors faites clairement ce que je veux. De mon code, j'ai mes valeurs désirées stockées dans le tableau nommé @start_cod. J'ai besoin de trouver un moyen de supprimer les nouvelles lignes et d'ajouter> Text / N dans la première ligne uniquement. Invite de commande si j'utilise cette commande awk '{improvement $ 2}' Fichier | TR "\ n \ r" | awk '{imprimer "> text \ n" $ 0}' Je vais obtenir la sortie souhaitée. Donc, si vous pouvez appliquer la commande ci-dessus dans START_COD. matry je serai obligé.


@Kgee - J'ai changé le code au nom de la matrice souhaité @start_cod . La commande que vous avez fournie awk '{imprimer $ 2}' fichier | TR -D "\ n \ r" | Awk 'Imprimer "> Text \ n" $ 0}' ne produira pas la sortie souhaitée. awk lit les fichiers de fichiers par ligne et il ne devrait pas y avoir \ n \ r en ligne de lecture (il est dépouillé en lecture). Comme awk lira la ligne par ligne sur la ligne Vous obtiendrez > texte pour chaque ligne de lecture.


@ Ours polaire. J'ai essayé la commande et travaille à 100% dans mon PC et TutorialSpoint.com/execute_bash_online.php . En ce qui concerne votre code ci-dessus quand je le colle sur mon script, les couleurs de code entières ont modifié les commentaires de Bleu sont devenus rose, etc. J'ai essayé de trouver s'il est "" manquant de la suivante sauf si je n'ai pas trouvé le problème. Je suis désolé que je suis vraiment mal au Perl.


@Kgee - Vous devez supprimer __ données __ et ci-dessous (il s'agit de données de test), modifiez également pendant () { sur el (<>) { - Pour ne lire pas à partir de __ Data __ Block mais à partir du fichier spécifié sur la ligne de commande.



1
votes

Vous voudrez peut-être voir Lire FASTA dans HASH . C'est le même problème et très proche du code que j'ai écrit avant de le lire. En outre, il existe Modules sur CPAN pouvant gérer FASTA .


Je pense Vous souhaitez combiner les séquences qui commencent avec le même nom, ignorant les chiffres. Les séquences ne doivent pas avoir d'espace intérieure. Dans votre code, vous ajoutez constamment des espaces. Vous vous joignez même à une nouvelle ligne. Alors, vous allez chez le médecin et dites "mon bras fait mal quand je fais ça" et le médecin dit "alors ne le fais pas". :) p>

Lorsque vous rencontrez ce type de problèmes, vérifiez les résultats de vos opérations à chaque étape pour voir si vous obtenez ce que vous attendez. Voici une version très simplifiée d'un programme que je pense faire ce que vous voulez. J'ai supprimé la majeure partie de la structure de données car elles compliquent votre processus. P>

En bref, lisez une ligne et retirez la nouvelle ligne à la fin. C'est une source de vos nouvelles lignes. Ensuite, extrayez la séquence et concaténez-la à la séquence précédente. Lorsque vous rejoindre code> avec de nouvelles lignes, vous ajoutez de nouvelles lignes. Donc, ne faites pas cela: p> xxx pré>

Vous n'avez pas besoin du tableau intermédiaire. Vous pouvez construire votre chaîne à votre guise. Vous n'avez pas besoin d'avoir toutes les pièces avant de le faire. P>

Maintenant, pour déterminer où vous allez vous tromper, faites un peu à la fois. Assurez-vous que vous avez extrait la bonne chose. Il est géré de mettre des caractères autour des variables que vous interpolez afin que vous puissiez voir des espaces au début ou à la fin: p> xxx pré>

puis, ajoutez une autre étape et assurez-vous que fonctionne: P >

Onoma: <name  aaa>
Onoma: <name2  cccc>
Onoma: <name99 aattaatt>


4 commentaires

Tout d'abord, merci pour votre réponse. Le code que j'ai posté faire des fonctions telles que nous supprimons les 3 premières lettres forment chaque ligne, randomiser les lignes et ma dernière étape consiste à ajouter uniquement dans le texte premier> Texte. Votre code a donc modifié l'ensemble de la portée de mon Perl.


J'essaie simplement de vous amener à la bonne structure de données. Je ne change pas toute la portée de rien, et malgré votre question, votre code ne fonctionne pas "100% de travail". Je n'écris pas votre code pour vous; Je vous montre comment comprendre votre code. Si vous souhaitez supprimer des caractères et randomiser des lignes, vous devez expliquer cela dans votre question. Vous n'avez rien dit de ce que vous essayez de faire. Revenez et dépensez deux paragraphes sans code expliquant la tâche.


Quand je parlais de la portée, je voulais dire la sortie que vous avez fournie. Je ne voulais pas vous offenser du tout :-(. J'ai utilisé votre script sur TutorialSpoint.com/execute_perl_online .php mais la sortie n'était pas que je cherchais. Dans mon script, j'ai substitué les avec mon tableau contenant toutes les valeurs, j'ai eu des erreurs telles que US ** UTILISATION DE VALEUR UNITIALISÉE $ € Substitution (S ///) **


Bien sûr, vous obtenez des erreurs lorsque vous modifiez mon code de travail en quelque chose d'autre (que vous refusez de nous montrer). Je n'essaie pas de vous obtenir la sortie que vous vouliez. Je vous montre comment votre code est cassé et comment aller la réparer. Vous résistez à l'aide.