2017-08-16 121 views
0

尝试从sam文件中获取某个字段,对其进行排序,然后在文件中查找唯一编号的数量。我一直在努力:流水线切割排序uniq

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

试图分类编号到一个新的文件或相同的文件,我刚开始一片空白时,切割工作,从第二场拉出数不过来。我曾尝试将管道分成几部分,但仍然出现相同的错误。我打算使用这三个函数来实现输出计数。

+0

好的。我们被教导说管道是迭代的;当它完成一部分时,它会转向下一部分。感谢那。 – user1381852

+0

我不确定你被教了什么,但我想你可能只是错过了一些观点(什么是迭代,甚至意味着在管道中什么是“管道”?)。不用担心,这些都可以被清理和学习,但是你可能想在一段时间内仔细研究shell管道和重定向。 – Evert

+0

相关(几乎重复,但答案将在问题本身):https://stackoverflow.com/questions/21584727/using-linux-cut-sort-and-uniq?rq=1和https:// stackoverflow。 com/questions/9609322/sorting-and-counting-method-faster-then-cat-file-sort-uniq-c?rq = 1。 – Evert

回答

0

使用

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

在你的原代码,您要重定向的cut输出到field2.txt,并在同一时间,输出试图管进入sort。这是行不通的(除非你使用tee)。将命令分成单独的命令(例如,使用;)或不要将输出重定向到文件。

同上下半年,在那里你写输出到sortedfield2.txt,因此最终什么都没有去stdout,没有任何东西被输入到uniq

所以另一种可能是:

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

这是一样的

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

你可以使用这个命令:

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

在你的代码是错误的。错误是“没有这样的文件或目录”。由于管道。你可以在这个链接学习如何使用它

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