2017-08-16 7 views
0

Si vous essayez d'obtenir un certain champ à partir d'un fichier sam, triez-le et trouvez le nombre de numéros uniques dans le fichier. J'ai essayé:Pipelining cut sort uniq

cut -f 2 practice.sam > field2.txt | sort -o field2.txt sortedfield2.txt | 
uniq -c sortedfield2.txt 

La coupe travaille pour tirer les numéros de champ à deux, mais en essayant de trier les numéros dans un nouveau fichier ou le même fichier que je suis en train d'obtenir un vide. J'ai essayé de casser le pipeline en sections mais j'ai toujours la même erreur. Je suis censé utiliser ces trois fonctions pour atteindre le nombre de sorties.

+0

Ah ok. On nous a enseigné que le pipeline était itératif; quand il a fini avec une partie, il passe à la suivante. Merci pour ça. – user1381852

+0

Je ne suis pas sûr de ce qu'on vous a enseigné, mais je pense que vous avez peut-être manqué quelques points (que signifierait itératif même dans un pipeline - qu'est-ce que «le pipeline»?). Ne vous inquiétez pas, tout cela peut être éclairci et appris, mais vous voudrez peut-être mélanger les tubes shell et les redirections sur un moment. – Evert

+0

Relatif (presque dupliqué, bien que la réponse serait dans la question elle-même): https://stackoverflow.com/questions/21584727/using-linux-cut-sort-and-uniq?rq=1 et https: // stackoverflow. com/questions/9609322/tri-et-comptage-méthode-rapide-puis-chat-fichier-sort-uniq-c? rq = 1. – Evert

Répondre

0

Utilisez

cut -f 2 practice.sam | sort -o | uniq -c 

Dans votre code d'origine, vous redirigez la sortie de cut-field2.txt et en même temps, en essayant de diriger la sortie en sort. Cela ne fonctionnera pas (sauf si vous utilisez tee). Séparez les commandes en tant que commandes individuelles (par exemple, utilisez ;) ou ne redirigez pas la sortie vers un fichier. Idem la seconde moitié, où vous écrivez la sortie à sortedfield2.txt et finissez ainsi avec rien allant à stdout, et rien n'étant canalisé dans uniq.

donc une alternative pourrait être:

cut -f 2 practice.sam > field2.txt ; sort -o field2.txt sortedfield2.txt ; uniq -c sortedfield2.txt 

qui est le même que

cut -f 2 practice.sam > field2.txt 
sort -o field2.txt sortedfield2.txt 
uniq -c sortedfield2.txt 
0

vous pouvez utiliser cette commande:

cut -f 2 practise.sam | uniq | sort > sorted.txt 

Dans votre code est erroné. L'erreur est "Aucun fichier ou répertoire". A cause du tuyau. Vous pouvez en apprendre davantage sur ce lien la façon dont il est utilisé

https://www.guru99.com/linux-pipe-grep.html