2016-04-15 11 views
0

Ich habe eine Software unter Linux arbeiten, wie test_sfWie verwendet man eine Pipeline in Linux?

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

gibt er eine Datei mit dem Namen test.results

aber ich habe test1.fastq.gz, test2. fastq.gz, wie kann man diese beiden Dateien verwenden, anstatt es zu entpacken?

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

Diese beiden Befehle funktionierten nicht.

Hinweis: Dies ist nur ein Spielzeug Befehl, um meine Frage zu zeigen.

+0

1) lesen Sie selbst und korrigieren Sie Ihr Beispiel, 2) schauen Sie sich 'xargs' an 3) es ist nicht nötig, hier mit [R] zu markieren. – Tensibai

+1

Was macht 'test_st'? Liest es von der Standardeingabe? Das ist alles, was die Pipe macht, nehme die Standardausgabe von links und führe sie zur Standardeingabe auf der rechten Seite. –

Antwort

2

Sie haben diesen Befehl ein:

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

Sie würden diese im Idealfall laufen, aber Sie können nicht, weil das Programm nicht komprimierten Eingang unterstützt:

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

So müssen Sie verwenden zcat, um die Datei zu entpacken und zu verbinden. Einige Programme verstehen als einen magischen Dateinamen, der stdin bedeutet. In diesem Fall können Sie das tun:

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

Wenn Ihr Programm auch nicht - als Sondermüll nicht versteht, können Sie dies in Bash verwenden können:

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

Was das bedeutet mit einer Befehlszeile wie folgt tatsächlich aufrufen Ihr Programm:

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

Wo XXX ist ein spezieller Dateiname, der eigentlich eine Pipe ist, wo zcat schreiben wird. Solange Ihr Programm das serielle Lesen aus einer Datei unterstützt (ohne einen wahlfreien Zugriff auf die Eingabe zu erfordern), wird es mit ziemlicher Sicherheit funktionieren. Diese letzte Technik wird hier weiter beschrieben: 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

Danke. Ich habe die ersten beiden getestet und es hat funktioniert, aber ich habe das dritte nicht versucht. – Ming

Verwandte Themen