2010-11-09 8 views
1

Je veux grep un lot de lignes consécutives, qui commence à un modèle spécifique et se termine à un modèle spécifique. E.g. le contenu du fichier ressemble à ceci:Comment faire pour grep un lot de lignes consécutives à partir d'un fichier

ligne 1

ligne 2

. . .

my_start_pattern

. . .

my_end_pattern

. . .

ligne n

La sortie de grep devrait ressembler à ce qui suit:

my_start_pattern

. . .

mon_nom_de_pour

Merci.

+0

Pourquoi 'grep'? Cela ne semble pas être le bon outil pour le travail. – skaffman

+0

Grep affichera N lignes après et/ou avant une correspondance (N étant un nombre) mais n'affichera pas les lignes entre deux correspondances. Jetez un oeil à l'utilitaire awk. – DwB

+0

L'autre outil est correct, c'est juste pour moi que cela ressemble à un problème de grepping, je peux me tromper. Je regarde awk, mais jusqu'à présent, je n'ai pas réussi à atteindre cet objectif ... – zobars

Répondre

3

Je ne sais pas si grep peut le faire, mais awk can.

awk '/start pattern/,/end pattern/' data_file_name 

(laisser tomber le nom de fichier si vous souhaitez filtrer de stdin)

+0

Merci, exactement ce dont j'ai besoin. – zobars

+0

Je suis venu par cette réponse et je me demandais s'il y avait un moyen de modifier cette commande 'awk' pour couper le' motif de départ 'et 'motif de fin' de la sortie. – 2rs2ts

+0

En haut de ma tête: 'awk '/ motif de départ /,/motif de fin/{if (!/Motif de départ/&&!/Fin motif) print}' nom_fichier_données' – joast

Questions connexes