0
votes

Comment puis-je utiliser AWK (premier champ de chaque fichier) sur plusieurs fichiers et obtenir le résultat pour chaque fichier d'entrée

J'ai essayé ls * .uffasta | parallèle --gnu "awk '{imprimé $ 1}'> {/.}. sortiefile.txt" 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.

Je peux courir cela juste bien mais je dois le faire pour chaque fichier un par un: awk '{improvement $ 1}' blast_output_file.txt> id_ blast_output_file.txt

Quelqu'un peut-il m'aider ici? Merci


1 commentaires

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.


3 Réponses :


-1
votes

vient d'écrire un script de bash xxx


2 commentaires

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



1
votes

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


3 commentaires

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



1
votes

Ajouter {}:

ls *.fasta | parallel --gnu "awk '{print $1}' {} > {/.}.outputfile.txt"


2 commentaires

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.