2017-08-16 120 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