2016-04-15 5 views
0

は、私は、Linuxでの作業のソフトウェアを持ってtest_sfLinuxでパイプラインを使用する方法は?

test_sf --input test.fastq --output test.results 

のようにそれは、出力ファイルはtest.results

を命名しますが、私はtest1.fastq.gzTEST2を持っています。 fastq.gz、どのようにこれらの2つのファイルを解凍する代わりに使用できますか?

zcat test1.fastq.gz | test_st --input --output test1.results 
zcat test1.fastq.gz | test_st --input --output test1.results 

これら2つのコマンドは機能しませんでした。

注:これは私の質問を示すおもちゃのコマンドです。

+0

1)読んであなたの例を修正してください。2) 'xargs'を見てください。3)ここで[R]でタグ付けする必要はありません。 – Tensibai

+1

'test_st'は何をしますか?標準入力から読み込みますか?これはパイプのすべてであり、左から標準出力を取り出し、右の標準入力に出力します。 –

答えて

2

このコマンドを持っている:

test_sf --input test.fastq --output test.results 

あなたは理想的にこれを実行するだろうが、あなたはあなたのプログラムが圧縮された入力をサポートしていないことができないので:

test_sf --input test.fastq.gz --output test.results # probably fails 

は、だから、使用する必要がありますzcatファイルを解凍してパイプで入れます。プログラムによっては-がstdinを意味する魔法のファイル名であると理解しています。その場合は次のようにします:

zcat test.fastq | test_sf --input - --output test.results # might work 

あなたのプログラムはまた、あなたがバッシュにこれを使用することができ、-などの特別なを理解していない場合は、次の

test_sf --input <(zcat test.fastq.gz) --output test.results # should work 

これがないと、実際にこのようなコマンドラインを使用してプログラムを起動します

test_sf --input /dev/XXX --output test.results 

ここでXXXは特別なファイル名で、実際にはzcatが書き込むパイプです。この方法は、プログラムがファイルから連続して読み込みをサポートしている限り(入力へのランダムアクセスを必要としない)、ほぼ確実に動作します。この最後のテクニックは、ここでさらに説明されています:https://unix.stackexchange.com/questions/101143/how-can-i-stream-data-to-a-program-that-expects-to-read-data-from-a-file-that-is

+0

ありがとうございます。私は最初の2つをテストし、それは働いたが、3番目を試していない。 – Ming

関連する問題