2016-09-18 5 views
0

, aber ich habe eine Frage zu einem kleinen Stück Code mit dem Befehl awk. Ich habe nirgendwo eine Antwort/Lösung gefunden.Verwenden Sie bash, um Daten zwischen zwei regulären Ausdrücken zu extrahieren, während Sie die Formatierung beibehalten

Ich versuche, eine Ausgabedatei zu analysieren und alle Daten zwischen dem ersten Ausdruck (einschließlich) ATOMIC und 2. Ausdruck (ohne) Bond zu extrahieren. Diese Daten sollen an eine neue Datei $1_geom gesendet werden. Bisher habe ich folgendes:

`awk '/ATOMIC/{flag=1;next}/Bond lengths in Bohr/{flag=0}flag' $1` >> $1_geom 

Dieses Skript wird die korrekten Daten für mich extrahieren, aber es gibt zwei Probleme:

  1. Die Linie ATOMIC ist nicht mit den Daten extrahiert

  2. Die Daten werden extrahiert und an eine einzelne Zeile angehängt. Ich möchte, dass die Daten die Formatierung aus der analysierten Datei beibehalten (5 Spalten, variable Anzahl von Zeilen). Bitte sehen Sie sich den Anhang an, um ein Visual zu sehen. Visual Example Attachment. Gibt es eine andere Möglichkeit, Daten anzuhängen (außer >>), damit ich die Formatierung fortsetzen kann?

Jede Hilfe wird geschätzt, danke.

+0

Warum ist der Befehl in Backticks? '\' ' – user000001

Antwort

0

Die next bewirkt, dass die erste Übereinstimmung übersprungen wird; nimm es raus, wenn du das nicht willst.

Die Backticks selbst sind ein Shell-Syntaxfehler (es sei denn, Ihr Awk-Skript erzeugt gültige Shell-Befehle). Ich nehme an, Sie haben ein useless echo oder etwas in Ihrem tatsächlichen Skript, das den Fehler entwaffnet, aber stattdessen die Symptome erzeugt, die Sie beschreiben.

+0

Ihr Screenshot scheint meine Vermutung zu bestätigen. Bitte posten Sie keine Bilder, wenn Sie tatsächlich Text anzeigen möchten. – tripleee

+0

Danke für Ihre Hilfe! Dies war Teil des Codes in einem csh-Skript und ich hatte ein "Echo" vor dieser Zeile. Entfernen Sie das "Echo", damit es perfekt funktioniert. –

0

Dies war Teil eines Codes in einem Csh-Skript und ich hatte ein "Echo" vor dieser Zeile. Das Entfernen des "Echos" lässt es perfekt funktionieren und adressiert die 2 Fragen, die ich hatte.

+0

Abgesehen davon, wirst du dir viele Male dafür danken, dass du von 'csh' zu einer gesunden Shell gewechselt bist. [tchrist's alte FAQ] (http://www.perl.com/doc/FMTEYEWTK/versus/csh.whynot) hat den ganzen Dreck. – tripleee

Verwandte Themen