J'ai essayé le '/pat1/,/pat2/p'
, mais je souhaite imprimer uniquement le texte entre les motifs, et non la ligne entière. Comment je fais ça?Impression de texte entre les expressions rationnelles
Répondre
Une gamme de motif est à motifs multiligne. Voici comment vous feriez ça:
sed -n '/pat1/,/pat2/{/pat1\|pat2/!p}' inputfile
-n
- ne pas imprimer par défaut/pat1/,/pat2/
- dans les deux modèles inclus/pat1\|pat2/!p
- imprimer tout ce qui est pas l'un des motifs
Ce que vous demandez peut-être est ce qui est entre deux modèles sur la même ligne. Une des autres réponses le fera.
Edit:
Quelques exemples:
$ cat file1
aaaa bbbb cccc
123 start 456
this is what
I want
789 end 000
xxxx yyyy zzzz
$ sed -n '/start/,/end/{/start\|end/!p}' file1
this is what
I want
Vous pouvez le raccourcir en disant sed
d'utiliser à nouveau le modèle le plus récent (//
):
$ sed -n '/.*start.*/,/^[0-9]\{3\} end 0*$/{//!p}' file1
this is what
I want
Comme vous pouvez voir, je n'ai pas eu à dupliquer la longue regex compliquée dans la deuxième partie de la commande.
Je ne connais pas le type de motif que vous avez utilisé, mais je pense que c'est aussi possible avec les expressions régulières.
cat myfile | sed -r 's/^(.*)pat1(.*)pat2(.*)$/\2/g'
utilisation inutile de chat. – ghostdog74
Vous n'avez pas besoin de capturer le premier et le dernier groupe. –
vous pouvez utiliser awk.
$ cat file
other TEXT
pat1 text i want pat2
pat1 TEXT I
WANT
pat2
other text
$ awk -vRS="pat2" 'RT{gsub(/.*pat1/,"");print}' file
text i want
TEXT I
WANT
La solution fonctionne pour des motifs répartis sur plusieurs lignes
sed -r 's/pat1(.*)pat2/\1/g' somefile.txt
Vous devez échapper les parenthèses ou utiliser l'option '-r'. –
Merci, édité. – Johnsyweb
- 1. Aide sur les expressions rationnelles Javascript
- 2. Correspond à unicode dans les expressions rationnelles de ply
- 3. Que signifient ces expressions rationnelles Perl?
- 4. Stocker les expressions rationnelles compilées PCRE en C/C++
- 5. Correspondance efficace de plusieurs expressions rationnelles en Python
- 6. Les différences entre l'écho, l'écho(), impression et impression() en PHP
- 7. Aide avec les expressions rationnelles PHP utilisant un aspect négatif derrière
- 8. Est-ce que les expressions rationnelles Python supportent quelque chose comme Perl's \ G?
- 9. en utilisant pyparsing pour analyser une liste des expressions rationnelles (littéralement)
- 10. impression PHP texte Problème
- 11. Pourquoi mes expressions rationnelles Perl n'extraient-elles pas correctement un nom de fichier d'un chemin?
- 12. Utilisation d'expressions rationnelles dans JSP EL
- 13. différence entre les expressions lambda et les méthodes anonymes - C#
- 14. impression ArrayCollection dans les champs de texte dans FLex
- 15. Impression de texte depuis l'application Silverlight
- 16. Les expressions régulières correspondent à n'importe quelle chaîne entre [et]
- 17. expressions régulières php attraper entre guillemets
- 18. Expressions régulières: différence entre^et \ A
- 19. Comment remplacer tout le texte entre deux phrases avec des expressions régulières dans Notepad ++ ou Textpad?
- 20. aide avec les expressions régulières
- 21. Sélection et impression de lignes spécifiques de fichier texte
- 22. texte Parse utilisant des expressions régulières
- 23. Remplacements d'expressions rationnelles multiples en C#
- 24. iPhone SDK: texte entre les sections UITableView?
- 25. Obtenir du texte entre les symboles, regex?
- 26. Expressions de code dans les thèmes ASP.NET
- 27. Récupérer le texte entre les balises A
- 28. Impression de reçus
- 29. Expressions régulières dans les étapes de concombre
- 30. Quel devrait être le RegEx si je veux trouver le texte entre les expressions "SI (NOUVEAU." Et "!"?
hmm, ça marche? J'ai pensé qu'il est plus approprié de remplacer 'pat [12]' au lieu d'utiliser '! p'. C'est bien sûr, si je ne comprends pas mal l'exigence de l'OP. :) – ghostdog74
@ ghostdog74: Je pense que l'OP utilise la mauvaise forme (celle que j'ai dans ma réponse) pour faire ce qu'il veut. Mon dernier paragraphe répond à cela. Votre réponse répond aux deux formes. Je vais ajouter un exemple ou deux. –
merci pour la modification. Qu'en est-il lorsque le motif de début et de fin se trouve sur la même ligne? Par exemple 'commencer c'est le texte que je veux terminer '. Bien que l'OP n'ait pas montré un échantillon de son fichier, je devine qu'il pourrait avoir les deux modèles sur la même ligne. – ghostdog74