2013-08-15 13 views
5

Ich möchte eine Teilzeichenfolge aus einer Datei erhalten, aber nur aus Zeilen, denen kein Ausrufezeichen vorausgeht (das ist das Kommentarzeichen in Fortran). Ich würde es vorziehen, Grep (aber nicht gebunden) zu verwenden. Zum Beispiel:grep regex return substring aber exclude Kommentare

infile.txt:

calib_ss/baseline.txt 
!calib_ss/base_sharpe.txt 

Wunschergebnis:

baseline 

ich so weit gekommen:

grep -Po "(?<=/)[^/.]*(?=\.)" infile.txt 

die

baseline 
base_sharpe 
zurück

Um die Zeilen auszuschließen, die mit beginnen! Ich dachte über die Kombination der Ausdruck mit

^[^\!] 

aber ich schaffe es nicht. Danke im Voraus!

+0

Bestimmte Sprache zurücksetzen? – hwnd

Antwort

4

sollte diese grep arbeiten:

grep -Po '^[^!].*?(?<=/)\K[^/.]*(?=\.)' infile.txt 

OUTPUT:

baseline 

Erläuterung:

  • ^[^!] wird auf l stellen Sie sicher, aber ! alles passen ine starten
  • \K wird sicherstellen, dass die Start-