Im awk
Folgenden versuche ich, den Wert von zu extrahieren, RSTRING
basierend darauf, wo der Wert einer anderen Variable $VCF
in einem gefunden wird file
. Der Wert von $VCF
wurde bereits extrahiert und das RSTRING
sind derzeit alle Zeilen, die mit beginnen R_2019
. Was ich erreichen möchte, ist, RSTRING
basierend darauf festgelegt zu werden, wo $VCF
es gefunden wurde. Danke :).
Datei
xxx_0000 19-0004-La-Fi
xxx_0001 19-0005-Last-Firs
xxx_0003 19-0008-LastN-FirstN
xxx_0005 190320-Control
R_2019_00_00_xxxx-000-v5.6_xxxxx
xxx_0007 19-0000-LastName-FirstName
xxx_0009 19-0001-Las-Fir
xxx_0011 190319-Control
R_2019_00_00_xxxx-00-v5.6_xxxxx
Wenn$VCF=19-0008-LastN-FirstN
gewünscht
RSTRING=R_2019_00_00_xxxx-000-v5.6_xxxxx
Wenn$VCF=19-0008-Las-Fir
gewünscht
RSTRING=R_2019_00_00_xxxx-00-v5.6_xxxxx
awk
awk -v ref="$VCF" 'match($0, ref) {print "$RSTRING"}' file
Antwort1
Zwei Optionen:
Lesen Sie die Datei Zeile für Zeile, setzen Sie ein Boolean-Flag, wenn Sie den VCF finden, und drucken Sie dann dienächsteRSTRING:
awk -v ref="$VCF" ' $0 ~ ref {have_vcf = 1} have_vcf && /^R_2019/ {print; have_vcf = 0} ' file
Lesen Sie die Datei absatzweise. Wenn der aktuelle Datensatz den VCF enthält, drucken Sie das letzte Feld des Datensatzes:
awk -F '\n' -v RS="" -v ref="$VCF" '$0 ~ ref {print $NF}' file