2013-08-13 11 views
16
1:FAILED  + *1  0  (8328832,AR,UNDECLARED) 

Das ist, was ich erwarte: 8.328.832, AR, nicht gemeldeteWie extrahiere ich den Inhalt zwischen zwei Klammern mit grep?

Ich versuche, einen allgemeinen regulären Ausdruck zu finden, der aus Inhalten zwischen zwei Klammern nehmen kann. Mein Versuch ist.

grep -o '\[(.*?)\]' test.txt > output.txt 

Aber es kann nichts = (

Dank passen

Antwort

18

Immer noch mit und

grep -oP '\(\K[^\)]+' file 

\K bedeutet, dass Blick um regex erweiterte Funktion verwenden. Mehr Genau, es ist ein positive Blick hinter Behauptung, können Sie es tun, wie folgt zu:

grep -oP '(?<=\()[^\)]+' file 

, wenn Sie die -P Option fehlt, können Sie dies mit :

perl -lne '/\(\K[^\)]+/ and print $&' file 

Ein weiterer einfacher Ansatz

awk -F'[()]' '{print $2}' file 
+0

Ich bekam "grep: Klammern nicht ausgeglichen", nachdem ich th lief Ist der Buchstabe P ein Tipp? @sputnick – user2574316

+0

Welches Betriebssystem benutzen Sie und welche Grep? –

+0

ist OS X (UNIX) @sputnick – user2574316

Verwandte Themen