Préparation LPI
Exam 101
103.2 Filtres et flux de texte
1
103.2 – Domaines de connaissances
Poids : 3
Envoyer des flux de texte au travers de filtre pour en modifier la
sortie
Les commandes sont regroupées dans le paquetage textutils
UPMC – FP – Préparation LPI - v1.1
2
103.2 – Flux de texte et filtres
Traitement des fichiers texte à l'aide de commandes simples
Ces commandes agissent:
Sur le contenu d'un fichier
Sur un flux
Grosse utilisation des métacaractères de redirection dans
l'utilisation des commandes de manipulation des fichiers textes
Cf module 103.4 pour plus de détails
Flux standards :
stdin : flux standard d'entrée (clavier)
stdout : flux standard de sortie (écran)
stderr : flux standard des erreurs (écran)
UPMC – FP – Préparation LPI - v1.1
3
103.2 – Flux de texte et filtres
L'option « », disponible sur la plupart de ces commandes,
indique que l'entrée de la commande vient de stdin
UPMC – FP – Préparation LPI - v1.1
4
103.2 – cat
cat : concaténation de fichiers (concatenate)
cat [OPTION]... [FILE]...
Affiche le résultat sur stdin
Avec un paramètre : affiche le contenu du fichier
$ cat liste1
Pommes
Poires
Anannas
Avec plusieurs paramètres : concatène l'ensemble des fichiers
$ cat liste1
Pommes
Poires
Anannas
$ cat liste2
Javel
Tirebouchon
$ cat liste3
Céréales
Huile
Crème
Beurre
UPMC – FP – Préparation LPI - v1.1
$ cat liste2 liste3 liste1
Javel
Tirebouchon
Céréales
Huile
Crème
Beurre
Pommes
Poires
Anannas
5
103.2 – cat
Avec aucun paramètre : attend son entrée depuis stdin
Utilisé habituellement avec une redirection pour créer un fichier
texte
Utiliser Ctrld pour signaler à la commande cat la fin du fichier
$ cat > liste4
Chaussure
Imper
Bérêt
tac : commande inverse de cat
$ cat liste1
Pommes
Poires
Anannas
$ tac liste1
Anannas
Poires
Pommes
UPMC – FP – Préparation LPI - v1.1
6
103.2 – cat
Options de la commande cat :
v : affiche les caractères non imprimables
E : affiche $ à chaque fin de ligne
T : affiche ^I à la place des tabulations
n : numérote les lignes
A : équivalent à vET
$ cat liste1
Pommes
Poires
Anannas
$ cat A liste1
Pommes$
^IPoires$
Anannas$
$ cat n liste1
1 Pommes
Poires
2
3Anannas
UPMC – FP – Préparation LPI - v1.1
7
103.2 – cat
split : commande duale de cat. Eclate le fichier en plusieurs
parties
split [OPTION]... [INPUT [PREFIX]]
Par défaut : fichiers résultats nommés « x » + « aa »,
« ab »,... « az », « ba », « bb »
Taille par défaut des fichiers résultats : 1000 octets
Options de la commande split :
b taille: répartition en fichiers de taille « taille » (b, kB, MB,
GB)
l nbelignes : répartition en fichiers de nbelignes
UPMC – FP – Préparation LPI - v1.1
8
103.2 – cat
$ split l 3 ficsplit1
[franck@port135 lpitests]$ ls x*
xaa xab xac xad
$ split b 10 ficsplit1 bouts
[franck@port135 lpitests]$ ls l bouts*
rwrwr 1 franck franck 10 févr. 1 22:38 boutsaa
rwrwr 1 franck franck 10 févr. 1 22:38 boutsab
rwrwr 1 franck franck 10 févr. 1 22:38 boutsac
rwrwr 1 franck franck 10 févr. 1 22:38 boutsad
rwrwr 1 franck franck 10 févr. 1 22:38 boutsae
rwrwr 1 franck franck 10 févr. 1 22:38 boutsaf
rwrwr 1 franck franck 10 févr. 1 22:38 boutsag
rwrwr 1 franck franck 10 févr. 1 22:38 boutsah
rwrwr 1 franck franck 10 févr. 1 22:38 boutsai
Publicité
UPMC – FP – Préparation LPI - v1.1
9
103.2 – od
od : affiche le contenu du fichier en octal (octal dump)
od [OPTION]... [FILE]...
od [abcdfilosx]... [FILE] [[+]OFFSET[.][b]]
od traditional [OPTION]... [FILE]
[[+]OFFSET[.][b] [+][LABEL][.][b]]
Options de la commande od :
t TYPE: sélectionne le format d'affichage des octets
c : affichage en caractères ASCII (équivalent t c)
t a : affiche le nom des caractères
A RADIX : sélectionne le mode d'affichage du
positionnement des octets (décimal, octal, aucun) visibles en
début de chaque ligne. A o par défaut
UPMC – FP – Préparation LPI - v1.1
10
103.2 – od
$ od liste1
0000000 020040 067520 066555 071545 004412 067520 071151 071545
0000020 040412 060556 067156 071541 000012
0000031
$ ll liste1
rwrwr 1 franck franck 25 févr. 1 22:15 liste1
[franck@port135 lpitests]$ od A d liste1
0000000 020040 067520 066555 071545 004412 067520 071151 071545
0000016 040412 060556 067156 071541 000012
0000025
$ od t c liste1
0000000 P o m m e s \n \t P o i r e s
0000020 \n A n a n n a s \n
0000031
$ od t a liste1
0000000 sp sp P o m m e s nl ht P o i r e s
0000020 nl A n a n n a s nl
0000031
UPMC – FP – Préparation LPI - v1.1
11
103.2 – expand
expand : transforme les tabulations en espaces
expand [OPTION]... [FILE]...
Options de la commande expand :
i: pas de conversion si la tabulation suit un caractère non
vide
t num : remplacement d'une tabulation par « num »
espaces au lieu de 8 par défaut
UPMC – FP – Préparation LPI - v1.1
12
103.2 – od
$ cat liste1
Pommes
Poires
Anannas
$ expand liste1
Pommes
Poires
Anannas
$ expand t1 liste1
Pommes
Poires
Anannas
$ expand t2 liste1
Pommes
Poires
Anannas
UPMC – FP – Préparation LPI - v1.1
13
103.2 – unexpand
unexpand : transforme les espaces en tabulation
unexpand [OPTION]... [FILE]...
Options de la commande unexpand :
t num : remplacement de « num » espaces pour une
tabulation
Attention : deux espaces minimum pour conversion en
tabulation
UPMC – FP – Préparation LPI - v1.1
14
103.2 – unexpand
$ cat liste2
Javel Déboucheur
Tirebouchon Serpillière
$ od a liste2
0000000 sp J a v e l sp sp sp D C ) b o u c
0000020 h e u r nl sp sp T i r e b o u c
0000040 h o n sp sp sp sp sp sp sp sp S e r p i
0000060 l l i C ( r e nl
0000070
$ unexpand t1 liste2 | od a
0000000 sp J a v e l ht ht ht D C ) b o u c
0000020 h e u r nl ht ht T i r e b o u c
0000040 h o n ht ht ht ht ht ht ht ht S e r p i
0000060 l l i C ( r e nl
0000070
$ unexpand t2 liste2 | od a
0000000 sp J a v e l ht sp D C ) b o u c h
0000020 e u r nl ht T i r e b o u c h o
0000040 n ht ht ht ht S e r p i l l i C ( r
0000060 e nl
0000062
UPMC – FP – Préparation LPI - v1.1
15
103.2 – tr
tr : transformation de caractères (translate)
tr [OPTION]... SET1 [SET2]
Options de la commande unexpand :
d : supprime le caractère dans SET
s : supprime la répétition de caractère
Fonctionne sur un flux et pas sur des fichiers
man tr pour avoir la liste exhaustive des chaînes de caractères
utilisables
Très utile pour changer les formats de fichiers (Mac, Linux,
Windows)
UPMC – FP – Préparation LPI - v1.1
16
103.2 – tr
$ cat liste2
Javel Déboucheur
Tirebouchon Serpillière
$ tr s ' ' < liste2
Javel Déboucheur
Tirebouchon Serpillière
$ cat ficunix
Ligne1
Ligne2
$ od a ficunix
0000000 L i g n e 1 nl L i g n e 2 nl
0000016
$ cat ficunix | tr '\n' '\r' | od a
0000000 L i g n e 1 cr L i g n e 2 cr
0000016
UPMC – FP – Préparation LPI - v1.1
17
103.2 – wc
wc : nbre de lignes, mots, octets (word count)
Publicité
wc [OPTION]... [FILE]...
Options de la commande wc :
c : compte les octets
m : compte les caractères
l : compte les lignes (car nl)
w : compte les mots
$ wc l liste1
3 liste1
$ wc c liste1
25 liste1
$ wc m liste1
25 liste1
UPMC – FP – Préparation LPI - v1.1
18
103.2 – head
head : affiche les premières lignes (10 premières par défaut)
head [OPTION]... [FILE]...
Options de la commande head :
n : affiche les n premières lignes
$ head n 5 ficsplit1
Ligne 1
Ligne 2
Ligne 3
Ligne 4
Ligne 5
$ head 5 ficsplit1
Ligne 1
Ligne 2
Ligne 3
Ligne 4
Ligne 5
UPMC – FP – Préparation LPI - v1.1
19
103.2 – tail
tail : affiche les dernières lignes (10 dernières par défaut)
tail [OPTION]... [FILE]...
Options de la commande tail :
f : affiche en continu (sortie avec Ctrlc)
f et –pid : termine quand le processus se termine
n : affiche les n dernières lignes
line=+n : affiche les dernières lignes à partir de la nième
UPMC – FP – Préparation LPI - v1.1
20
103.2 – tail
$ tail n 2 ficsplit1
Ligne 10
Ligne 11
$ tail line=+6 ficsplit1
Ligne 6
Ligne 7
Ligne 8
Ligne 9
Ligne 10
Ligne 11
UPMC – FP – Préparation LPI - v1.1
21
103.2 – pr
pr : préparation d'un texte pour impression. Pagination et en
têtes
pr [OPTION]... [FILE]...
Options de la commande pr :
h 'texte': affiche en entête un texte en argument au lieu de
du nom de fichier
m : fusionne plusieurs fichiers et répsentation en colonnes
$ pr ficsplit1
20100201 22:29 ficsplit1 Page 1
Ligne 1
Ligne 2
Ligne 3
UPMC – FP – Préparation LPI - v1.1
22
103.2 – pr
$ pr h 'Mes courses' m liste1 liste2
20100202 22:48 Mes courses Page 1
Pommes
Poires
Anannas
Javel
Déboucheur
Tirebouchon
Serpillière
UPMC – FP – Préparation LPI - v1.1
23
103.2 – nl
nl : Numérote les lignes
nl [OPTION]... [FILE]...
Options de la commande nl :
$ nl ficsplit1
1Ligne 1
2Ligne 2
3Ligne 3
4Ligne 4
5Ligne 5
6Ligne 6
7Ligne 7
8Ligne 8
9Ligne 9
10
11
Ligne 10
Ligne 11
UPMC – FP – Préparation LPI - v1.1
24
103.2 – fmt
fmt : formatage de texte
fmt [WIDTH] [OPTION]... [FILE]...
Options de la commande fmt :
w n: formate en n colonnes
$ pr h 'Mes courses' m liste1 liste3 | fmt w 20
20100202 22:57
Mes courses
Page 1
Pommes
Céréales Poires
Huile Anannas
Crème
UPMC – FP – Préparation LPI - v1.1
Beurre
25
103.2 – fmt
sort : tri de lignes de texte
sort [OPTION]... [FILE]...
Options de la commande sort :
f: Pas de casse
n: tri numérique
r : tri inverse
k POS : Utilisation du champ situé à la colonne POS
(numérotation à partir de 1)
t SEP : utilise le caractère SEP comme séparateur de
champs
LC_COLLATE : var qui contient le jeu de car utilisé pour le tri
$ locale
...
LC_COLLATE="fr_FR.UTF8"
Publicité
UPMC – FP – Préparation LPI - v1.1
26
103.2 – sort
$ cat liste1
Pommes
Poires
Anannas
$ sort liste1
Anannas
Poires
Pommes
$ nl liste1 | sort
1Pommes
2Poires
3Anannas
$ nl liste1 | sort k2
3Anannas
2Poires
1Pommes
UPMC – FP – Préparation LPI - v1.1
27
103.2 – uniq
uniq : Supprime les lignes identiques
uniq [OPTION]... [INPUT [OUTPUT]]
Options de la commande uniq :
c : préfixe les lignes dupliquée avec le nombre
d'occurences
i: pas de casse
A utiliser conjointement avec la commande sort
UPMC – FP – Préparation LPI - v1.1
28
103.2 – uniq
$ cat dup
Ligne1
Ligne4
Ligne2
Ligne3
Ligne4
Ligne4
Ligne2
$ sort dup
Ligne1
Ligne2
Ligne2
Ligne3
Ligne4
Ligne4
Ligne4
$ sort dup |uniq
Ligne1
Ligne2
Ligne3
Ligne4
UPMC – FP – Préparation LPI - v1.1
29
103.2 – cut
cut : sélectionne des champs particuliers du fichier
cut OPTION... [FILE]...
Options de la commande cut :
d DELIM : Utiliser DELIM à la place de la tabulation
f num: sélectionne le champ à la position num
$ nl liste1
1Pommes
2Poires
3Anannas
$ nl liste1 | cut f2
Pommes
Poires
Anannas
UPMC – FP – Préparation LPI - v1.1
30
103.2 – paste
paste : fusionne lignes à lignes les fichiers
paste [OPTION]... [FILE]...
Options de la commande paste :
d DELIM : Utiliser DELIM à la place de la tabulation
$ paste liste1 liste2 liste3
Pommes Javel Céréales
Poires Déboucheur
Anannas
Tirebouchon Crème
Beurre
Serpillière
Huile
$ cat liste*
Pommes
Poires
Anannas
Javel
Déboucheur
Tirebouchon
Serpillière
Céréales
Huile
Crème
Beurre
Chaussure
Imper
Bérêt
UPMC – FP – Préparation LPI - v1.1
31
103.2 – join
join : permet de faire une jointure entre deux fichiers sur la
base d'un champ commun.
Affiche la ligne sur stdout correspondant à chaque jointure. Par
défaut les champs sont séparés par des espaces.
join [OPTION]... FILE1 FILE2
Important : les deux fichiers doivent être triés sur le champ de
jointure (avec la commande sort)
UPMC – FP – Préparation LPI - v1.1
32
103.2 – join
Options de la commande join :
i : ignore la casse
t char : définit le caractère séparateur des champs (espace
par défaut)
1 champ : jointure sur le champ « champ » du fichier 1
2 champ : jointure sur le champ « champ » du fichier 2
a filenum : Affiche les lignes du fichier filenum (1 ou 2) qui
ne satisfont pas à la condition de jointure
v filenum : idem option a mais supprime les jointures
correctes
UPMC – FP – Préparation LPI - v1.1
33
103.2 – join
$ sort n k2 table1 > table1.sort
$ cat table1.sort
user4 3423 Nico Rette
user1 5437 Jean Bon
user2 8756 Henri Cochet
user3 9845 Sarah Croche
$ cat table1
user1 5437 Jean Bon
user2 8756 Henri Cochet
Publicité
user3 9845 Sarah Croche
user4 3423 Nico Rette
$ cat table2
5437 Tennis
9845 Kayak
$ sort n k1 table2 | join 1 2 2 1 table1.sort
5437 user1 Jean Bon Tennis
9845 user3 Sarah Croche Kayak
$ sort n k1 table2 | join 1 2 2 1 a 1 table1.sort
3423 user4 Nico Rette
5437 user1 Jean Bon Tennis
8756 user2 Henri Cochet
9845 user3 Sarah Croche Kayak
$ sort n k1 table2 | join 1 2 2 1 v 1 table1.sort
3423 user4 Nico Rette
8756 user2 Henri Cochet
UPMC – FP – Préparation LPI - v1.1
34
103.2 – sort
sort : permet trier les lignes d'un fichier
Beaucoup d'options. Possibilité de trier sur plusieurs champs
sort [OPTION]... [FILE]...
Options :
d : ordre alphabétique
f: ignore la casse
n : trie sur un ordre numérique
r : inverse le tri
kPOS1[,POS2] : la clé de tri commence à POS1 et se
termine à POS2 (n° de champ commence à 1)
o fichier : fichier résultat du tri
t char : caractère séparateur des champs
UPMC – FP – Préparation LPI - v1.1
35
$ cat table1
user1 5437 Jean Bon
user42 6765 Arthur Eiffel
user2 8756 Henri Cochet
user54 3487 Sacha Touille
user3 9845 Sarah Croche
user4 3423 Nico Rette
$ sort k4 table1
user1 5437 Jean Bon
user2 8756 Henri Cochet
user3 9845 Sarah Croche
user42 6765 Arthur Eiffel
user4 3423 Nico Rette
user54 3487 Sacha Touille
103.2 – sort
$ sort nk2 table1
user4 3423 Nico Rette
user54 3487 Sacha Touille
user1 5437 Jean Bon
user42 6765 Arthur Eiffel
user2 8756 Henri Cochet
user3 9845 Sarah Croche
UPMC – FP – Préparation LPI - v1.1
36
103.2 – sed
sed : Editeur de flux (stream editor)
Permet la transformation de fichiers textes sur le flux d'entrée
(dans un tube) et affiche le résultat sur stdout (pas de
modification du fichier d'origine)
sed [OPTION]... {scriptseulementsipasd
autrescript} [fichierdentrée]..
Sed utilise les expressions régulières pour rechercher les lignes
à modifier, rechercher les motifs à modifier et remplacer le texte
correspondant
Options
e script : ajouter le script aux commandes
f fichier : le script est un fichier externe
UPMC – FP – Préparation LPI - v1.1
37
103.2 – sed
Syntaxe d'une commande sed
[adresse1[,adresse2]]fonction[argument]
[/regexp1/[,/regexp2/]]fonction[argument]
Adresse (permet de sélectionner un groupe de ligne)
N° de ligne
$ : dernière ligne
1 : première ligne
/regexp1/ et /regexp2/: expressions régulières qui permettent
de sélectionner un ensemble de lignes sur la base d'un motif
Utilisation de la virgule pour définir un ensemble
Utilisation du point virgule pour séparer les commandes
UPMC – FP – Préparation LPI - v1.1
38
103.2 – sed
Syntaxe d'une commande sed ...
[adresse1[,adresse2]]fonction[argument]
[/regexp1/[,/regexp2/]]fonction[argument]
Fonction
d : suppression de la ligne
s : substitution de texte à l'intérieur de la ligne
s/regexp/remplacement/modificateur
Modificateur
g : remplacement sur l'ensemble de la ligne
Options
i : applique les modifications dans le fichier d'entrée
Attention : ne pas rediriger la sortie de sed dans le fichier
d'entrée. Cela vide le fichier !
UPMC – FP – Préparation LPI - v1.1
39
103.2 – sed
$ cat table4
M Franck Duprat
Mme Catherine Moutarde
M Jeanlouis Crottin
Mme Solène Chamon
$ sed e 's/^M /Monsieur /' table4
Monsieur Franck Duprat
Mme Catherine Moutarde
Monsieur Jeanlouis Crottin
Mme Solène Chamon
$ sed e '1,2s/^M /Monsieur /' table4
Monsieur Franck Duprat
Mme Catherine Moutarde
M Jeanlouis Crottin
Mme Solène Chamon
UPMC – FP – Préparation LPI - v1.1
40
103.2 – cut
col : élimine les sauts de ligne arrière
cut OPTION... [FILE]...
Intérêt pour mettre en forme les pages de manuel
UPMC – FP – Préparation LPI - v1.1
41
Quelques conseils LPI...
UPMC – FP – Préparation LPI - v1.1
42