Ich habe eine Datei „align_summary.txt“, die wie folgt aussieht:Bash: Reguläre Ausdrücke Backticks
Left reads:
Input : 26410324
Mapped : 21366875 (80.9% of input)
of these: 451504 (2.1%) have multiple alignments (4372 have >20)
...more text....
... and several more lines of text....
ich das% des multiplen Alignments unter allen linksbündig ziehen will liest (in diesem Fall es ist 2.1) in der Bash-Shell.
Wenn ich dies:
pcregrep -M "Left reads.\n..+.\n.\s+Mapped.+.\n.\s+of these" align_summary.txt | awk -F"\\\(" '{print $2}' | awk -F"%" '{print $1}' | sed -n 4p
Es gibt mir sofort die Ausgabe: 2.1
Allerdings, wenn ich den gleichen Ausdruck in Backticks wie folgt einschließen:
leftmultiple=`pcregrep -M "Left reads.\n..+.\n.\s+Mapped.+.\n.\s+of these" align_summary.txt | awk -F"\\\(" '{print $2}' | awk -F"%" '{print $1}' | sed -n 4p`
I erhalten ein Fehler:
awk: syntax error in regular expression ( at
input record number 1, file
source line number 1
Wie ich es verstehe, beeinflusst die Einfügung dieses Ausdrucks in Backticks die Interpretation des regulären Ausdrucks, der "(" - Symbol enthält, trotz der Tatsache, dass es durch umgekehrte Schrägstriche zurückgehalten wird.
Warum passiert das und wie kann man diesen Fehler vermeiden?
Ich wäre dankbar für jeden Input und Anregungen.
Vielen Dank,