Das folgende Beispiel zeigt eine große Datei mit dem Namen AT5G60410.gff:
Chr5 TAIR10 gene 24294890 24301147 . + . ID=AT5G60410;Note=protein_coding_gene;Name=AT5G60410
Chr5 TAIR10 mRNA 24294890 24301147 . + . ID=AT5G60410.1;Parent=AT5G60410;Name=AT5G60410.1;Index=1
Chr5 TAIR10 protein 24295226 24300671 . + . ID=AT5G60410.1-Protein;Name=AT5G60410.1;Derives_from=AT5G60410.1
Chr5 TAIR10 exon 24294890 24295035 . + . Parent=AT5G60410.1
Chr5 TAIR10 five_prime_UTR 24294890 24295035 . + . Parent=AT5G60410.1
Chr5 TAIR10 exon 24295134 24295249 . + . Parent=AT5G60410.1
Chr5 TAIR10 five_prime_UTR 24295134 24295225 . + . Parent=AT5G60410.1
Chr5 TAIR10 CDS 24295226 24295249 . + 0 Parent=AT5G60410.1,AT5G60410.1-Protein;
Chr5 TAIR10 exon 24295518 24295598 . + . Parent=AT5G60410.1
Ich habe einige Probleme, bestimmte Zeilen mit grep daraus zu extrahieren. Ich wollte alle Linien extrahieren, die vom Typ "Gen" oder vom Typ "Exon" sind, wie in der dritten Spalte angegeben. Ich war überrascht, als dies nicht funktionierte:
grep 'gene|exon' AT5G60410.gff
Es werden keine Ergebnisse zurückgegeben. Wo bin ich falsch gelaufen?
egrep
stattdessen.Antworten:
Sie müssen dem entkommen
|
. Das Folgende sollte den Job machen.quelle
Standardmäßig behandelt grep die typischen Sonderzeichen als normale Zeichen, sofern sie nicht maskiert werden. Sie können also Folgendes verwenden:
Sie können den Modus jedoch ändern, indem Sie die folgenden Formulare verwenden, um das zu tun, was Sie erwarten:
quelle
Dies ist eine andere Art, nach einigen Optionen zu suchen:
Der
-e
Schalter gibt verschiedene übereinstimmende Muster an.quelle
time
Befehl zu verwenden, um herauszufinden.Das wird funktionieren:
quelle
Ich habe diese Frage gefunden, als ich nach einem bestimmten Problem gegoogelt habe, bei dem ein Befehl an einen
grep
Befehl weitergeleitet wurde, der den Wechseloperator in einer Regex verwendete, und dachte, ich würde meine speziellere Antwort einbringen.Es stellte sich heraus, dass der Fehler, mit dem ich konfrontiert war, beim vorherigen Pipe-Operator (dh
|
) und nicht beim alternativen Operator (dh|
identisch mit dem Pipe-Operator) im Grep-Regex lag. Die Antwort für mich war, richtig zu entkommen und spezielle Shell-Zeichen wie & zu zitieren, bevor angenommen wurde, dass das Problem bei meinem Grep-Regex lag, an dem der Wechseloperator beteiligt war.Der Befehl, den ich auf meinem lokalen Computer ausgeführt habe, war beispielsweise:
Dieser Befehl führte zu folgendem Fehler:
Dieser Fehler wurde behoben, indem mein Befehl geändert wurde in:
Indem
&
ich dem Charakter mit doppelten Anführungszeichen entkommen konnte, konnte ich mein Problem lösen. Die Antwort hatte überhaupt nichts mit der Wechseloperation zu tun.quelle