Je voulais une commande bash utilisant le regex pour lister toutes les informations entre un '<' et un '>' afin de lister les zones a completer dans un fichier LICENSE (type: GNU GPL v3).
Cette commande
bash
utilise grep avec une expression régulière (regex) pour lister toutes les informations entre un<
et un>
dans un fichier texte.
grep -o '<[^>]*>' LICENSE
grep
est une commande utilisée pour rechercher des motifs (patterns) dans un fichier.- L'option
-o
degrep
permet de ne retourner que les parties correspondantes du texte, plutôt que la ligne entière. - L'expression régulière
<[^>]*>
est utilisée pour rechercher tous les textes qui commencent par '<', suivis de n'importe quel nombre de caractères qui ne sont pas '>', puis se terminent par '>'.
Cette commande listera toutes les occurrences de ce motif dans le fichier et les affichera à l'écran. Si vous souhaitez rediriger les résultats vers un autre fichier ou effectuer d'autres actions, vous pouvez le faire en utilisant des opérateurs de redirection ou en ajoutant des commandes supplémentaires à la suite de cette commande.
Cette commande
bash
utilise grep avec une expression régulière (regex) pour lister toutes les informations entre un<
et un>
dans un fichier texte. Mais... Cette fois, qui ne contiennent pas d'URL.
Pour lister toutes les informations entre un '<' et un '>' dans un fichier texte et exclure celles qui contiennent des URLs, je vais utiliser grep
avec une expression régulière qui exclut les URLs courantes. Voici une commande Bash pour cela :
grep -o '<[^>]*>' LICENSE | grep -Ev '(http|https|www\.)'
- La première partie de la commande
grep -o '<[^>]*>' LICENSE
est la même que dans la réponse précédente, elle extrait toutes les occurrences entre '<' et '>'. - La deuxième partie de la commande
grep -Ev '(http|https|www\.)'
utilise un autregrep
avec l'option-E
pour activer les expressions régulières étendues et-v
pour inverser la recherche, c'est-à-dire qu'elle exclura les lignes contenant les motifs spécifiés. - L'expression régulière
(http|https|www\.)
recherche les occurrences dehttp
,https
ouwww.
dans le texte. Si une ligne contient l'un de ces motifs, elle sera exclue des résultats.
Voilà donc cette commande bash liste enfin toutes les informations entre '<' et '>', tout en excluant les lignes qui contiennent des URLs.