Salut Je souhaite supprimer une ligne en utilisant sed si elle correspond à 2 expressions régulières dans la même ligne. Par exemple, la ligne commence par/* et se termine par */(commentaire). Le script suivant fera la plupart de cela. Sed -e '/ ^/*/d' -e '/ */$/d' Ce script supprimera toutes les lignes commençant par * et se terminant par * /. Je le veux pour enlever la ligne seulement si répond aux deux critères pas un.SED: Correspondance sur 2 modèles sur la même ligne
Répondre
Essayez
sed '/^\/\*.*\*\/$/ d' filename
La clé ici est que vous pouvez sorta combiner deux motifs regex en un seul, simplement en les reliant avec .*
, qui correspond à « un certain nombre de caractère ». Bien sûr, cela impose un ordre entre les deux. Le premier motif ^\/\*
doit apparaître avant le second \*\/$
pour que ce motif particulier corresponde.
En outre, depuis *
a une signification particulière dans regex, assurez-vous d'échapper à vos astres, tout comme vous devez échapper à vos barres obliques.
Supprime toutes les commentaires multilignes ainsi
par exemple
# cat file
blah blah /* comment */
words1
words2
/* multiline
comments
/*
end
$ awk -vRS='*/' '{ gsub(/\/\*.*/,""); }1' file
blah blah
words1
words2
vous pouvez ajouter un autre filtre à sed 's|\/\/.*||'
pour filtrer //
commentaires et
Pour votre problème, vous pouvez faire quelque chose le long des lignes recommandées par @echo. Cependant, si vous avez besoin d'une solution plus générale, par exemple, où les expressions rationnelles ne sont pas ancrées à une extrémité de la ligne ou à l'autre, ou peuvent être dans l'ordre de la ligne, ou même se chevaucher, vous aurez quelque chose comme le script sed suivant:
/regexp1/! b notboth
/regexp2/! b notboth
:both
# sed commands if both patterns match
n
:notboth
# sed commands if at least one pattern doesn't match
n
Ceci utilise les capacités de branchement de sed. La commande b
se connecte à l'étiquette nommée si la correspondance de modèle réussit, et le suivi !
sur le motif inverse le sens de la correspondance. Donc, à peu près,
Mettez cela dans un fichier, disons foo.sed
, et exécutez-le comme sed -f foo.sed
.
- 1. sed + répertoire de correspondance PATH de la ligne par sed
- 2. Faire 2 doLogs afficher sur la même ligne
- 3. Question sur sed command?
- 4. 2 formulaires ajax sur la même page
- 5. 2 entités JPA sur la même table
- 6. Continuer la sortie sur la même ligne
- 7. cscript - sortie d'impression sur la même ligne sur la console?
- 8. grep ou sed ou awk + correspondance MOT
- 9. divs composés sur la même ligne
- 10. Aligner des éléments sur la même ligne
- 11. Plusieurs éléments Haml sur la même ligne
- 12. Balises XmlTextWriter.WriteFullEndElement sur la même ligne
- 13. texte sed + sur une ligne spécifique après une IP
- 14. Algorithmes de correspondance de modèles
- 15. Afficher la même icône en 2 tailles différentes sur C#
- 16. regex sed, le travail sur les sous-chaînes et non sur toute la ligne
- 17. Comment supprimer une ligne sur deux avec sed?
- 18. MySQL avec 2 GAUCHE JOIN sur la même table
- 19. Style de codage - Gardez les parenthèses sur la même ligne ou sur la nouvelle ligne?
- 20. ligne sed + match et ajouter mot sur la première chaîne en ligne
- 21. CSS Pied de page non sur la même ligne
- 22. CSS aide s'il vous plaît, 2 objets refusent de rester sur la même ligne
- 23. jqgrid 2 grille sur la même ligne, 1x gauche, 1x droite
- 24. remplacer la ligne par sed dans csh
- 25. Combiner 2 comptes avec différents où sur la même table
- 26. Création de 2 requêtes http sur la même connexion
- 27. problème avec 2 jquery autocomplete sur la même page
- 28. Entrée sur la même ligne que la sortie dans C#?
- 29. et la boîte d'entrée sur la même ligne
- 30. Objets sur la même ligne sans perdre de positions?