2017-10-16 1 views
0

Bin ziemlich neu im Unix-Feld und ich versuche gerade, Datensatz aus einer Textdatei zu extrahieren. Ich habe versucht mit sed, grep, awk, aber es scheint nur mit dem Extrahieren von Zeilen zu arbeiten, aber ich möchte einen ganzen Datensatz extrahieren ... Hier ist ein Beispiel für eine Datei, aus der ich die 2 Datensätze extrahieren möchte (Abbildungen nach die Zeilen "R.Time Intensity")Wie extrahiert man einen Datensatz aus einer Textdatei?

[Header] 
Application Name LabSolutions 
Version 5.87 
Data File Name C:\LabSolutions\Data\Antoine\170921_AC_FluoSpectra\069_WT3a derivatized lignin LiCl 430_GPC_FOREVER_430_049.lcd 
Output Date 2017-10-12 
Output Time 12:07:32 

[Configuration] 
Instrument Name BOTAN127-Instrument1 
Instrument # 1 
Line # 1 
# of Detectors 3 
Detector ID Detector A Detector B PDA 
Detector Name Detector A Detector B PDA 
# of Channels 1 1 2 

[LC Chromatogram(Detector A-Ch1)] 
Interval(msec) 500 
# of Points 9603 
Start Time(min) 0,000 
End Time(min) 80,017 
Intensity Units mV 
Intensity Multiplier 0,001 
Ex. Wavelength(nm) 405 
Em. Wavelength(nm) 430 
R.Time (min) Intensity 
0,00000 -709779 
0,00833 -709779 
0,01667 17 
0,02500 3 
0,03333 7 
0,04167 19 
0,05000 9 
0,05833 5 
0,06667 2 
0,07500 24 
0,08333 48 

[LC Chromatogram(Detector B-Ch1)] 
Interval(msec) 500 
# of Points 9603 
Start Time(min) 0,000 
End Time(min) 80,017 
Intensity Units mV 
Intensity Multiplier 0,001 
R.Time (min) Intensity 
0,00000 149 
0,00833 149 
0,01667 -1 

Ich würde jede Idee sehr schätzen. Danke im Voraus. Antoine

+0

Add erwartete Ausgabe sowie mindestens eines des Befehls zu hinterfragen Sie versuchten ... Ich denke, das Q & A wird es selbst zu lösen helfen https://stackoverflow.com/questions/17908555/printing- mit-sed-or-awk-a-line-folgenden-ein-passendes Muster – Sundeep

+0

oder vielleicht so einfach wie https://stackoverflow.com/questions/38972736/how-to-select-lines-between-two-patterns – Sundeep

Antwort

0
awk '/^[^0-9]/&&d{d=0} /R.Time/{d=1}d' file 

Kurze Erklärung,

  • d als Set Flag zur Bestimmung der Druckzeile oder nicht
  • /^[^0-9]/&&d{d=0}: wenn Regex ^[^0-9] entspricht & & d==1, deaktiviert d
  • /R.Time/{d=1}: wenn string "R.Time" gesucht, aktiviert d
+0

GROSS !!! Danke vielmals... –

0
awk '/R.Time/,/LC/' file|grep -v -E "R.Time|LC" 

grep Teil werden die R.Time und LC Linien entfernen, die von

awk als Teil des Ausgangs kommen
0

Ich denke, es ist ein Job für sed.

sed '/R.Time/!d;:A;N;/\n$/!bA' infile 
Verwandte Themen