Je peux exécuter la commande suivante si j'apporte filtre.py p> mais l'environnement que je veux exécuter cela n'a pas de python. Mon seul choix de convertir cela en Perl, que je connais existe dans l'environnement? Y a-t-il une commande Easy SED ou AWK pour faire cela? P> J'ai essayé ce qui suit, mais cela ne me donne pas tout à fait ce que je cherche car il manque les +/- 4 lignes: < / p> [EDIT: Le script Python dit lignes_to_include_after_end_match est 4 mais en réalité, il retourne 3] p> p> myfile code> à un environnement avec
Python code> disponible:
3 Réponses :
étant donné que les terminaisons de ligne sont notez que la marque nécessite 6 si vous voulez imprimer des lignes supplémentaires 4 après le Match de fin. placé dans plusieurs lignes pour la redabilication: p> \ n code>, vous pouvez essayer ceci:
Je pense que votre propre code Python n'imprimera que 3 autres lignes après la fin de la correspondance. P>
Oui tu as raison. Mon script Python ne devrait imprimer que 3 lignes, ce que je voulais cela. Je vais mettre à jour le message original à noter que.
J'ai essayé la commande awk code> mais il semble que cela ressemble à renvoyer les lignes P-1 suivantes après avoir trouvé "du texte", puis les 3 lignes avant la première instance de "un autre texte". J'espérais avoir les 4 lignes avant "du texte", tout le texte entre "un texte" et la première instance de "un autre texte" après cette instance de "Quelque texte" et les 3 prochaines lignes après " texte"
Oui, il existe plusieurs instances de du texte code> et
d'autres texte code>.
AWK version 20070501
@Joel mis à jour. Essayez à nouveau s'il vous plaît, voyez si cela fonctionne comme prévu.
Ceci pourrait fonctionner pour vous (GNU SED):
sed ':a;$!{N;s/\n/&/4;Ta};/^start/M{:b;n;/end$/M!bb;:c;N;s/\n/&/4;Tc;b};$d;D' file
avec Notez que le script scanne le fichier d'entrée trois fois et peut ne pas être approprié pour le temps d'exécution de cas est crucial. p> [EDIT] P> P> Si vous Avoir plusieurs sed code>, veuillez essayer:
sed -n "$(($(sed -n '/some text/=' myfile) - 4)),\$p" myfile | sed "/some other text/{N;N;N;q}"
sed -n '/ certains texte / =' code> renvoie le numéro de ligne qui correspond à
du texte code>. li>.
sed -n '/ un autre texte / =' code> fonctionne de la même manière et le numéro de ligne obtenu est ajouté par 4. Li>
ul>
"un autre texte" code> dans le fichier, essayez plutôt: p>
Bien que je pense que cette approche est assez intelligente, la question avec ce «autre texte» apparaît plusieurs fois dans le fichier et je souhaite saisir uniquement le texte entre «Quelque texte» (y compris les 4 lignes précédentes) et la première instance de «certains autre texte "(y compris les 3 prochaines lignes).
Hmm .. Je me suis inquiété d'une telle possibilité :). J'ai mis à jour ma réponse. Souhaitez-vous l'essayer?