Skip to content

Instantly share code, notes, and snippets.

@0x07CB
Last active January 28, 2024 15:31
Show Gist options
  • Save 0x07CB/8bd65310011bcf400d8878b98fe3238b to your computer and use it in GitHub Desktop.
Save 0x07CB/8bd65310011bcf400d8878b98fe3238b to your computer and use it in GitHub Desktop.
REGEX BASH CHEATSHEET - 01282024

TRAITEMENT D'UN FICHIER LICENSE ( GPLv3 )

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).

Essai numéro 1:

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

Explications :

  • grep est une commande utilisée pour rechercher des motifs (patterns) dans un fichier.
  • L'option -o de grep 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.

Essai numéro 2:

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\.)'

Explications :

  • 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 autre grep 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 de http, https ou www. 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment