Outils pour utilisateurs

Outils du site


tech:notes_sed_grep_regex

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
tech:notes_sed_grep_regex [2025/03/24 15:06] – créée - modification externe 127.0.0.1tech:notes_sed_grep_regex [2025/12/15 16:21] (Version actuelle) Jean-Baptiste
Ligne 1: Ligne 1:
 +<!DOCTYPE markdown>
 {{tag>Brouillon Regex Python Shell}} {{tag>Brouillon Regex Python Shell}}
  
-Notes sed grep regex+Notes sed grep regex
  
-== grep+## grep
  
 Voir : Voir :
 +* `man regex`
 * [[grep avec option p comme AIX - Récupérer un paragraphe complet]] * [[grep avec option p comme AIX - Récupérer un paragraphe complet]]
  
 +Voir aussi :
 +* pcregrep
  
- +## Regex
-== Regex+
  
 Exclude Exclude
-<code ->+~~~
 ^((?!motif).)*$ ^((?!motif).)*$
-</code>+~~~ 
 + 
 + 
 +Grepper sur plusieurs lignes (match grep with line break) 
 +~~~bash 
 +grep -zP '\S{64}\n\S{64}' 
 +~~~ 
  
-=== Extended regular expressions+### Extended regular expressions
  
 Source : https://www.gnu.org/software/sed/manual/html_node/Extended-regexps.html Source : https://www.gnu.org/software/sed/manual/html_node/Extended-regexps.html
Ligne 24: Ligne 34:
  
 Examples: Examples:
-<code ->+~~~
 abc? abc?
     becomes ‘abc\?’ when using extended regular expressions. It matches the literal string ‘abc?’.     becomes ‘abc\?’ when using extended regular expressions. It matches the literal string ‘abc?’.
Ligne 35: Ligne 45:
 \(abc*\)\1 \(abc*\)\1
     becomes ‘(abc*)\1’ when using extended regular expressions. Backreferences must still be escaped when using extended regular expressions.      becomes ‘(abc*)\1’ when using extended regular expressions. Backreferences must still be escaped when using extended regular expressions. 
-</code>+~~~
  
-=== Pb +Trouver des tabulations dans un fichier (GNU grep) you can use the Perl-style regexp 
 +~~~bash 
 +grep -P '\t'
 +~~~
  
-==== Pb Binary file daemon.log matches 
  
 +### Pb 
  
-<code bash>+#### Pb binary file matches 
 + 
 + 
 +~~~bash
 # grep -i -e '2020-11-24' daemon.log # grep -i -e '2020-11-24' daemon.log
 Binary file daemon.log matches Binary file daemon.log matches
-</code>+~~~
  
 Solution Solution
-<code bash>+~~~bash
 grep -a -i -e '2020-11-24' daemon.log grep -a -i -e '2020-11-24' daemon.log
-</code>+~~~ 
 + 
 + 
 +## head tail 
 + 
 +Supprimer les deux dernières lignes 
 +~~~bash 
 +head -n -2 myfile.txt 
 +~~~ 
 + 
 +Supprimer les 4 primières lignes 
 +~~~bash 
 +tail -n +4 myfile.txt 
 +~~~ 
  
-== Sed+## Sed
  
 Voir :  Voir : 
Ligne 58: Ligne 88:
  
 Matched text Matched text
-<code bash>+~~~bash
 sed -i -e 's/^LoadModule mod_unique_id.c/#&/' /etc/proftpd/modules.conf sed -i -e 's/^LoadModule mod_unique_id.c/#&/' /etc/proftpd/modules.conf
-</code>+~~~
  
 Commenter tout un fichier Commenter tout un fichier
-<code bash>+~~~bash
 sed -i -e 's/^[^#]/#&/' /etc/snmp/snmp.conf sed -i -e 's/^[^#]/#&/' /etc/snmp/snmp.conf
-</code>+~~~ 
 + 
 + 
 +Supprimer tous les espaces en début de ligne 
 +~~~bash 
 +sed -e 's/^\s\+//g' 
 +~~~ 
  
 Première lettre en majuscule Première lettre en majuscule
-<code bash>+~~~bash
 sed -e 's/^./\U&/' sed -e 's/^./\U&/'
-</code>+~~~
  
 Insérer une ligne au début d'un fichier  Insérer une ligne au début d'un fichier 
-<code bash>+~~~bash
 sed -i '1i/dev/mapper/vg_os-root   /    xfs    defaults,noatime    1    1' /etc/fstab sed -i '1i/dev/mapper/vg_os-root   /    xfs    defaults,noatime    1    1' /etc/fstab
-</code>+~~~
  
 Ou pour insérer le caractère '{' en première ligne  Ou pour insérer le caractère '{' en première ligne 
-<code bash>+~~~bash
 sed -e '1 i\{'  sed -e '1 i\{' 
-</code>+~~~
  
 Strip HTML Strip HTML
-<code bash>+~~~bash
 sed -e 's/<[^>]*>//g' sed -e 's/<[^>]*>//g'
-</code>+~~~
  
 Colonnes Colonnes
-<code bash>+~~~bash
 df -PhT |column -t df -PhT |column -t
 grep -v -e '^#' /etc/fstab |column -t grep -v -e '^#' /etc/fstab |column -t
-</code>+~~~
  
 Adresse IP Adresse IP
-<code bash>+~~~bash
 rgrep -E --color -e '([0-9]{1,3}\.){3}[0-9]{1,3}' /var/www/plop/www.acme.fr/htdocs/ rgrep -E --color -e '([0-9]{1,3}\.){3}[0-9]{1,3}' /var/www/plop/www.acme.fr/htdocs/
-</code>+~~~
  
 Supprimer une ligne Supprimer une ligne
-<code bash>+~~~bash
 sed -i -e '/\/data/d' /etc/fstab sed -i -e '/\/data/d' /etc/fstab
-</code>+~~~
  
 Supprimer toutes les lignes à partir du motif Supprimer toutes les lignes à partir du motif
-<code bash>+~~~bash
 sed -e '/MODIF/,/$$/d' plop.txt sed -e '/MODIF/,/$$/d' plop.txt
-</code>+~~~
  
 **$$** : jusqu'à la fin du fichier **$$** : jusqu'à la fin du fichier
Ligne 114: Ligne 151:
 Source et explications : https://stackoverflow.com/questions/1251999/how-can-i-replace-a-newline-n-using-sed Source et explications : https://stackoverflow.com/questions/1251999/how-can-i-replace-a-newline-n-using-sed
  
-<code bash>+~~~bash
 sed ':a;N;$!ba;s/\n/ /g' file sed ':a;N;$!ba;s/\n/ /g' file
-</code>+~~~
  
  
 Afficher de la ligne n à la ligne m : Afficher de la ligne n à la ligne m :
-<code bash>+~~~bash
 cat -n launch.sh cat -n launch.sh
 # ou # ou
Ligne 127: Ligne 164:
 # Puis (de la ligne 46 à la ligne 68) # Puis (de la ligne 46 à la ligne 68)
 cat launch.sh | sed -n -e '46,68p' >> build.sh cat launch.sh | sed -n -e '46,68p' >> build.sh
-</code>+~~~
  
  
-=== Character Classes+### Character Classes
  
 how to represent "alphanumeric or _ or -" how to represent "alphanumeric or _ or -"
Ligne 148: Ligne 185:
  
  
-== Awk+## Awk
  
 Voir : Voir :
 * https://www.redhat.com/sysadmin/gawk-word-game * https://www.redhat.com/sysadmin/gawk-word-game
 +
 +Utiliser les variables d'environement dans awk :
 +~~~bash
 +awk -v a="$var1" -v b="$var2" 'BEGIN {print a,b}'
 +~~~
  
 Dernier champ ; avant dernier champ Dernier champ ; avant dernier champ
-<code bash>+~~~bash
 awk '{print $NF}' awk '{print $NF}'
  
 awk '{print $(NF - 1)}' awk '{print $(NF - 1)}'
-</code>+~~~
  
  
 Mettre en majuscule/minuscule et grepper Mettre en majuscule/minuscule et grepper
-<code bash+~~~bash 
 awk '/sAMAccountName/ {print tolower($2)}' awk '/sAMAccountName/ {print tolower($2)}'
-</code>+~~~
  
 Exemple ligne commençant par ''opencv'' ou ''libopencv'' Exemple ligne commençant par ''opencv'' ou ''libopencv''
-<code bash>+~~~bash
 apt-cache search opencv |awk '/^(lib)*opencv/ {print $1}' apt-cache search opencv |awk '/^(lib)*opencv/ {print $1}'
-</code>+~~~
  
 Trouver les zombies  Trouver les zombies 
-<code bash>+~~~bash
 ps aux | awk '$8 ~ /^[Zz]/' ps aux | awk '$8 ~ /^[Zz]/'
-</code>+~~~
  
 Remplacer un motif par un autre Remplacer un motif par un autre
-<code ->+~~~
 $ echo "Bobby is cool" | awk '{sub("Bobby","Teddy"); print}' $ echo "Bobby is cool" | awk '{sub("Bobby","Teddy"); print}'
 Teddy is cool Teddy is cool
-</code>+~~~
  
 Exemple Exemple
-<code bash>+~~~bash
 ip link |awk '/: br-/ { gsub(":", "") ; print $2 }' ip link |awk '/: br-/ { gsub(":", "") ; print $2 }'
-</code>+~~~
  
  
 Awk One-Liners - Remove duplicate, nonconsecutive lines Awk One-Liners - Remove duplicate, nonconsecutive lines
-<code bash>+~~~bash
 iptables-save |awk ' !x[$0]++' |iptables-restore iptables-save |awk ' !x[$0]++' |iptables-restore
-</code>+~~~
  
 sum - total - faire l'addition / la somme de nombres séparés par des sauts de ligne sum - total - faire l'addition / la somme de nombres séparés par des sauts de ligne
-<code bash>+~~~bash
 awk '{s+=$1} END {printf "%.0f", s}' fichiers.txt awk '{s+=$1} END {printf "%.0f", s}' fichiers.txt
-</code>+~~~
  
 if greater / less than if greater / less than
-<code bash>+~~~bash
 awk -F':' '$3 >=1000 && $3 <=65534 {print $3}' /etc/passwd awk -F':' '$3 >=1000 && $3 <=65534 {print $3}' /etc/passwd
-</code>+~~~
  
 Avant-dernier champs Avant-dernier champs
-<code bash>+~~~bash
 awk '{ print ( $(NF-1) ) }' awk '{ print ( $(NF-1) ) }'
-</code>+~~~
  
 Remplacer un motif par un autre (remplace) Remplacer un motif par un autre (remplace)
-<code bash>+~~~bash
 awk '/^gpg: key / {gsub(":", "") ; print $3 ;}') awk '/^gpg: key / {gsub(":", "") ; print $3 ;}')
-</code>+~~~
  
 Lire une valeur dans un fichier ini en supprimant les espaces Lire une valeur dans un fichier ini en supprimant les espaces
-<code ini config.ini>+''config.ini'' 
 +~~~ini
 process_name = appsrvd process_name = appsrvd
-</code>+~~~
  
-<code bash>+~~~bash
 awk -F= '/process_name/ { gsub (" ", "", $0) ; print $2 }' config.ini awk -F= '/process_name/ { gsub (" ", "", $0) ; print $2 }' config.ini
-</code>+~~~
  
 Calcul Calcul
-<code bash>+~~~bash
 calc() { awk "BEGIN { print $* }"; } calc() { awk "BEGIN { print $* }"; }
  
 calc_sum() { awk '{s+=$1} END {printf "%.0f", s}' "$*" } calc_sum() { awk '{s+=$1} END {printf "%.0f", s}' "$*" }
-</code>+~~~ 
 + 
 +### Awk autres 
 + 
 +''/etc/auto.smb'' 
 +~~~bash 
 +# ......... 
 +$SMBCLIENT -gNL $key 2>/dev/null| awk -v key="$key" -v opts="$opts" -F'|' -- ' 
 +        BEGIN   { ORS=""; first=1 } 
 +        /Disk/ 
 +                  if (first) 
 +                        print opts; first=0 
 +                  dir = $2 
 +                  loc = $2 
 +                  # Enclose mount dir and location in quotes 
 +                  # Double quote "$" in location as it is special 
 +                  gsub(/\$$/, "\\$", loc); 
 +                  print " \\\n\t \"/" dir "\"", "\"://" key "/" loc "\"" 
 +                } 
 +        END     { if (!first) print "\n"; else exit 1 } 
 +        ' 
 +~~~
  
  
-== Python+## Python
  
 **re.match** \\ **re.match** \\
Ligne 244: Ligne 308:
  
  
-== Exemple de regex+## Exemple de regex
  
-<code python>+~~~python
 email_re = re.compile(r'([a-zA-Z0-9_\+\-\.]+)@(([[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)') email_re = re.compile(r'([a-zA-Z0-9_\+\-\.]+)@(([[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)')
-</code>+~~~
  
-== Autres+## Autres
  
-=== Tr+### Tr
  
 SC1017 (error): Literal carriage return. Run script through  SC1017 (error): Literal carriage return. Run script through 
-<code bash>+~~~bash
 tr -d '\r' . tr -d '\r' .
-</code>+~~~
  
 Convertir les fins de ligne en null char Convertir les fins de ligne en null char
-<code bash>+~~~bash
 tr '\n' '\0' tr '\n' '\0'
-</code>+~~~
  
-=== Preserve file timestamp in multifile string replace+### Preserve file timestamp in multifile string replace
  
 Source : https://gist.github.com/u0d7i/c03e34e57802d0b6347a#file-preserve_date_in_replace-txt Source : https://gist.github.com/u0d7i/c03e34e57802d0b6347a#file-preserve_date_in_replace-txt
  
-<code bash>+~~~bash
 # -I to grep ignores binary files, # -I to grep ignores binary files,
 # @ in sed works as separator for strings with / # @ in sed works as separator for strings with /
Ligne 274: Ligne 338:
  
 grep -IR aaaa /somepath/ | awk -F: '{print $1}' | while read line; do touch -r $line /tmp/timeref; sed -i 's@aaaa@bbbb@' $line; touch -r /tmp/timeref $line; done grep -IR aaaa /somepath/ | awk -F: '{print $1}' | while read line; do touch -r $line /tmp/timeref; sed -i 's@aaaa@bbbb@' $line; touch -r /tmp/timeref $line; done
-</code>+~~~
  
  
tech/notes_sed_grep_regex.1742825205.txt.gz · Dernière modification : de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki