Les expressions régulières

  • ^ début de ligne
  • . un caractère quelconque
  • $ fin de ligne
  • x* zéro ou plus d'occurrences du caractère x
  • x+ une ou plus occurrences du caractère x
  • x? une occurrence unique du caractère x
  • [...] plage de caractères permis
  • [^...] plage de caractères interdits
  •  \ {n\} pour définir le nombre de répétition n du caractère placé devant
Exemple
l'expression [a-z][a-z] * cherche les lignes contenant au minimum un caractère en minuscule. [a-z] caractère permis, [a-z]* recherche d'occurrence des lettres permises.
L'expression ^[0-9]\ {4\}$ a pour signification, du début à la fin du fichier $, recherche les nombres[0-9] de 4 chiffres \ {4\}.

grep

  • -v affiche les lignes ne contenant pas la chaîne
  • -c compte le nombre de lignes contenant la chaîne
  • -n chaque ligne contenant la chaîne est numérotée
  • -x ligne correspondant exactement à la chaîne
  • -l affiche le nom des fichiers qui contiennent la chaîne

Sed

pour GNU sed : sed -i modifie directement le fichier sans affichage sur la sortie standard.

substitution :

sed '{/motif/|/regexp/|n }/s/foo/bar/m' <fichier>

sed 's/day/night/' <old >new
sed 's/day/night/' old >new
echo day | sed 's/day/night/'

sed 's/day/night/g' 
sed 's/day/night/4' 
sed '/baz/s/foo/bar/g'
sed '/baz/!s/foo/bar/g'
sed '18 s/sed/SED/'

ajouter une ligne :

sed '{/motif/|/regexp/|n}{i|a|c}\<Texte à insérer>' <fichier>
  • l'insertion avant (avec le paramètre "i" comme insertion)
  • l'ajout après (avec le paramètre "a" comme après)
  • le remplacement (avec le paramètre "c" comme changement)

effacer une ligne :

sed '{[/]<n>|<chaîne>|<regex>[/]}d' <fichier>
sed '3d' efface la 3 ligne
sed '$d' efface la dernière ligne
sed '1,10d' efface les 10 premières lignes
sed '/^$/d' efface les lignes vides
http://www.commentcamarche.net/faq/478-sed

awk

awk [-Fs] [-v variable] [-f fichier de commandes] 'program' fichier
-F Spécifie les séparateurs de champs.
-v Définie une variable utilisée à l'intérieur du programme.
-f Les commandes sont lu à partir d'un fichier.

awk -F ":" '{ $2 = "" ; print $0 }' /etc/passwd imprime chaque ligne du fichier /etc/passwd après avoir effacé le deuxième champs
awk 'END {print NR}' fichier imprime le nombre total de lignes du fichiers
awk '{print $NF}' fichier imprime le dernier champs de chaque ligne
who | awk '{print $1,$5}' imprime le login et le temps de connexion.
awk 'length($0)>75 {print}' fichier imprime les lignes de plus de 75 caractères. (print équivaut à print $0)