J'ai essayé Je peux courir cela juste bien mais je dois le faire pour chaque fichier un par un: Quelqu'un peut-il m'aider ici? Merci p> ls * .uffasta | parallèle --gnu "awk '{imprimé $ 1}'> {/.}. sortiefile.txt" code>
Et cela ne produit pas le résultat dont j'ai besoin. J'ai 48 fichiers où j'ai besoin d'extraire ces champs et de les sortir à 48 fichiers indépendants. p>
awk '{improvement $ 1}' blast_output_file.txt> id_ blast_output_file.txt code> p> p>
3 Réponses :
vient d'écrire un script de bash
Vous n'avez pas besoin de ne pas utiliser pour la boucle, vous pouvez lire des fichiers dans Awk lui-même. Voir cette fois aussi Stackoverflow.com/a/54049213/5866580
Bien sûr, heureux de vous aider à voir ce lien une fois Stackoverflow.com/help/someone-answers
Pourriez-vous s'il vous plaît essayer de suivre.
awk '{if(FILENAME!=prev){close(prev)};print $1 > (FILENAME".id.blast.out.txt");prev=FILENAME}' *.fasta
Cela fonctionne pour tout ce que j'ai jeté dessus. Merci encore!
En fait, après 10 fichiers ou donc, je reçois une erreur qu'elle fait trop de fichiers ouverts.
@ user3105519, j'avais déjà pris soin de celui-ci en fermant des fichiers
Ajouter {}:
ls *.fasta | parallel --gnu "awk '{print $1}' {} > {/.}.outputfile.txt"
Cela ne semble pas fonctionner avec un autre fichier que j'avais. Essentiellement une table où chaque chaîne est séparée par 5 espaces. Quand j'ai couru awk sur un fichier, il a été capable de saisir la première colonne très bien. Lorsque j'ai couru le script ci-dessus sur le fichier .tab, il vient de recopier le fichier. Pourquoi cela ferait-il cela lorsqu'il est en cours d'exécution parallèle? Merci
La partie «AWK» fonctionne-t-elle seul (c'est-à-dire sans GNU parallèle)? Sinon, faites d'abord ce travail. Publiez également un MCVE. Cela le rend tellement plus facile à vous aider.
En voyant que votre profil pourrait vous voir difficilement de choisir une réponse correcte, alors rendez-vous à votre question et lorsque vous avez suffisamment de réponses, essayez de sélectionner 1 d'entre eux comme étant correct.