Ligne de commande
Par llwynrt le vendredi, janvier 15 2010, 12:48 - Lien permanent
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
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 videshttp://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) |