Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ceci est une ancienne révision du document !
Soit les trois dernières lignes du fichier /etc/passwd :
cat /etc/passwd
Debian-gdm:x:112:120:Gnome Display Manager:/var/lib/gdm3:/bin/false hypathie:x:1000:1000:Hypathie,,,:/home/hypathie:/bin/bash libvirt-qemu:x:113:122:Libvirt Qemu,,,:/var/lib/libvirt:/bin/false
libvirt-qemu
; x
; 113
, etc. :
.La commande cut permet d'afficher des zones spécifiques d'un fichier.
cut [options] [fichier...]
Sélection par caractère.
Le premier caractère des trois dernières lignes
cut -c 1 /etc/passwd
D h l
Du premier au neuvième caractère
cut -c -9 /etc/passwd
Debian-gd hypathie: libvirt-q
Du neuvième au dernier caractère
cut -c 9- /etc/passwd
dm:x:112:120:Gnome Display Manager:/var/lib/gdm3:/bin/false :x:1000:1000:Hypathie,,,:/home/hypathie:/bin/bash qemu:x:113:122:Libvirt Qemu,,,:/var/lib/libvirt:/bin/false
Du onzième au vingt-et-unième caractère
cut -c 11-21 /etc/passwd
:x:112:120: :1000:1000: mu:x:113:12
cut -c 1-9,11-21 /etc/passwd
saned:x:11:119::/hom Debian-gd:x:112:120: hypathie::1000:1000: libvirt-qmu:x:113:12
Découpages par caractère | significations |
---|---|
cut -c -n | du caractère 1 à n |
cut -c n- | de n jusqu'à la fin |
cut -c n-m | de n à m |
cut -c n-m,i-j | de n à m et de i à j |
Découpage par champ (ou colonne), en fonction du délimiteur -d
Et liste des champs “”-f“”.
-d
, mais si le séparateur est un autre caractère, il faut l'indiquer
Coupe en fonction du délimiteur-d':'
et du premier champ-f 1
cut -d':' -f 1 /etc/passwd
Debian-gdm hypathie libvirt-qemu
Coupe en fonction du délimiteur-d':'
et des champs 1 ; 3 et 4-f 1,3,4
.
cut -d':' -f 1,3,4 /etc/passwd
Debian-gdm:112:120 hypathie:1000:1000 libvirt-qemu:113:122
cut -d'délimiteur' -f n | délimiteur et n° champ délimité |
cut -d'délimiteur' f n,m,… | délimiteur et plusieurs champs |
Afficher soit le nombre de mots, soit le nombre de ligne, soit le nombre d'octets
wc [options] [fichier...]
Le nombre d'utilisateur du système ?
wc -l /etc/passwd
33 /etc/passwd
echo "Coucou à tous">> essai-wc
wc -w essai-wc
3 essai-wc
wc -c essai-wc
15 essai-wc
grep [options] regexp [fichier...]
Voir : caractères utilisés dans les expressions régulières étendues
-c | afficher le décompte des lignes correspondantes |
-i | ignorer la case |
-E | utiliser les regexp étendues (correspond à egrep) |
Deux utilisations:
Soitgrep [options] “expression” /chemin/fichier
(on applique grep sur un fichier)
Soitgrep [options] cmd | regexp
(on travaille à partir d'un flux d'entrée avec un filtre (pipe)
grep -E "(:[0-9]{4}:){1}" /etc/passwd
hypathie:x:1000:1000:Hypathie,,,:/home/hypathie:/bin/bash
/sbin/ifconfig | grep -oE "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
127.0.0.1 255.0.0.0 192.168.0.21 192.168.0.255 255.255.255.0
sed [options] commande [fichier...]
ou
sed [options] -f script [fichier...]
options | significations |
---|---|
-e | enchaîner plusieurs commandes |
-r | utiliser les expressions régulières étendues dans un script |
-n | mode silencieux : permet de ne rien modifier associée au drapeau p (print) : affichage sur la sortie standard |
-f | Les commandes sont lues à partir d'un fichier préalablement rédigé. |
-i | Le fichier est édité sur place. |
Dans les exemples qui suivent, ne considérons que la présence ou l'absence de l'optioni
; le reste de la commande est expliqué par la suite.
echo "aaaa BBB cCcC # 12345" >> ~/sed1.txt
sed '' sed1.txt
aaaa BBB cCcC # 12345
sed 's+ +\n+g' ~/sed1.txt
aaaa BBB cCcC # 12345
sed '' sed1.txt
aaaa BBB cCcC # 12345
sed -i.bak
:sed -i.bak 's/sed1.txt//' ~/sed1.txt
sed n'a pas afficher sur la sortie standard le contenu du fichier de sauvegarde.
cat sed1.txt.bak
aaaa BBB cCcC # 12345
sed -i
:sed -i 's+ +\n+g' ~/sed1.txt
cat sed1.txt
aaaa BBB cCcC # 12345
Les options doivent se suivre dans un ordre précis
sed -i -e 's/$/\\n/' ~/sed1.txt
sed -i -e '/^$/d' ~/sed1.txt
s/motif/substitut/ -> si motif = une regex -> alors subtitut = une chaîne de caractère
On peut utiliser la syntaxe habituelle, ou la syntaxe étendue avec l'option-r
.
-r, --regexp-extended use extended regular expressions in the script. //[...]// REGULAR EXPRESSIONS POSIX.2 BREs should be supported, but they aren't completely because of performance problems. The \n sequence in a regular expression matches the newline character, and similarly for \a, \t, and other sequences.
`-r' `--regexp-extended' Use extended regular expressions rather than basic regular expressions. Extended regexps are those that `egrep' accepts; they can be clearer because they usually have less backslashes, but are a GNU extension and hence scripts that use them are not portable. *Note Extended regular expressions: Extended regexps.
-r
:ER simples : ^ $ . * \( \) [ \{ \} \
-r
: ER étendues : | ^ $ . * + ? ( ) [ { } \
d
commande de suppressionsed '3,4 d' ~/sed1.txt
aaaa BBB 12345
pas d'option : rien n'est modifié
d
: commande de suppression
3,4
: ligne 3 et 4
-e
et répétition le commande d
:sed -e '3d; 4d' ~/sed1.txt
aaaa BBB 12345
/ /
:sed '/^B/d' ~/sed1.txt
aaaa cCcC # 12345
/ /,/ /
:sed '/^B/,/^1/d' ~/sed1.txt
aaaa
s/modèle/remplacement/[drapeau] fichier
ou
cmd | s/modèle/remplacement/[drapeau]
g | global : toutes les occurrences |
1, 2, etc. | un nombre : la nième occurrence |
w | écrire les modifications effectuées dans un fichier |
p | afficher la ligne modifiée |
e | exécution d'une commande |
sed 's/C/c/' ~/sed1.txt
aaaa BBB cccC # 12345
sed 's/C/c/2' ~/sed1.txt
aaaa BBB cCcc # 12345
sed "s/12345/6789/w sed1-modif" ~/sed1.txt
cat ~/sed1.txt
6789
sed 's/C/c/gw modif-sed1.txt' ~/sed1.txt
aaaa BBB cccc # 12345
cccc
Avec l'option-n
pour éviter les doublons, on utilise le drapeau p ;
En effet, on a vu que pour chaque modification, tout le texte est affiché.
drapeau p : il affiche le texte modifié, puis il applique le drapeau, donc affiche ce qui les lignes modifiées.
Grâce-n
, on n'affiche pas ce qui est modifié.
-n
+ drapeau p : on affiche que ce qui a été modifié
sed -n 's/12345/6789/p' ~/sed1.txt
6789
Utilisation de la sortie d'une commande comme chaîne de remplacement.
sed 's/^#/date/e' ~/sed1.txt
cat ~/sed1.txt
6789 aaaa BBB cCcC mardi 15 juillet 2014, 11:48:27 (UTC+0200) 12345
VAR="coucou"
export VAR
sed 's/^#/echo '$VAR'/e' ~/sed1.txt
aaaa BBB cCcC coucou 12345
d | supprimer |
q | quitter |
p | afficher avec -n |
i\texte | insérer du texte |
a\texte | ajouter du texte |
c\texte | remplacer du texte |
= | afficher |