2011-03-03 3 views
1

je le contenu suivant ci-dessous dans un fichier:grep une parenthèse gauche

texte

(
            gab "test"
            set ("TEST_SUB ")
          origine   (354 504)
            localiser "T"
)

Je vim /texte \ n [\ t] . \ N [\ t] et le mot "texte" et les parenthèses de gauche ont été mis en surbrillance. Mais lorsque j'utilise egrep 'text \ n [\ t] . \ N [\ t]' il n'y a AUCUNE sortie. Je me demandais comment je peux attendre jusqu'à la bonne parenthèse.

Merci.

Répondre

0

Si vous savez combien de temps l'échantillon va être, vous pouvez utiliser le drapeau Après, en utilisant -AN où N est le nombre de lignes après la correspondance que vous voulez attraper.

$grep -A7 "text" file.txt 
text 

(
     gab "test" 
     set("TEST_SUB") 
     origin(354 504) 
     localize "T" 
) 
+2

En outre, vous devez savoir qu'une expression régulière ne peut pas gérer les parenthèses imbriquées. – amccormack

+0

merci. ça marche. C'est une façon de le faire. – user642318

+0

Mais, existe-t-il un moyen de mettre expression reg comme la condition de SET peut varier d'un cas à l'autre. – user642318

2

Au lieu de egrep vous pouvez utiliser sed.

sed -n '/^text/,/^($/p' yourfile affichera toutes les lignes commençant par text jusqu'à ce que le ( se trouve au début d'une ligne.