Edition avec critères |
![]() |
![]() |
Les filtres UNIX |
Si vous avez un fichier très long, et que vous voulez visualiser que la fin, vous disposez de la commande tail :
La syntaxe est la suivante, si vous tapez :
tail +10 mon-fichier
Vous obtenez toutes les lignes du fichier de la 10eme jusqu'à la fin.
tail -10 mon-fichier
Vous obtenez les 10 dernières lignes à partir de la fin.
Vous pouvez indiquer si votre unité est la ligne (par défaut), le bloc ou le caractère avec l'option -t
tail -10 -c mon-fichier
Vous obtenez les 10 derniers caractères du fichier.
Si vous avez un fichier très long, et que vous voulez visualiser que le début, vous disposez de la commande head :
La syntaxe est la suivante, si vous tapez :
head +10 mon-fichier
Vous obtenez toutes les lignes du fichier de la 10eme jusqu'au début.
head -10 mon-fichier
Vous obtenez les 10 premières lignes à partir du début.
Vous pouvez indiquer si votre unité est la ligne (par défaut), le bloc ou le caractère avec l'option -t
head -10 -c mon-fichier
Vous obtenez les 10 premiers caractères du fichier.
La commande wc permet de compter le nombre de ligne d'un fichier, mais aussi le nombre de mot ou de caractères.
wc -l mon-fichier
Cette commande va donner le nombre de lignes contenues dans le fichier mon-fichier. Pour avoir le nombre de mot l'option est -w, l'option -c compte le nombre de caractères.
La commande wc sans option donne à la fois le nombre de ligne, le nombre de caractères et le nombre de mots.
Si vous voulez connaître le nombre de fichier dans un répertoire, la commande sera donc :
ls -l | wc -l
La commande cut permet d'extraire certains champs d'un fichier. Les options sont les suivantes :
option | effet | |
-c | extrait suivant le nombre de caractères | |
-f | extrait suivant le nombre de champs | |
-dx | Le caractère x est le séparateur de champ |
Avec la commande cut, contrairement à sort, le premier champ a comme numéro 1, le deuxième 2 est ainsi de suite.
Nous prendrons toujours notre fichier carnet-adresse :
maurice:29:0298334432 :Crozon |
marcel:13:0466342233 :Marseille |
robert:75:0144234452 :Paris |
yvonne:92:013344433 :Palaiseau |
La commande :
cut -c-10 carnet adresse
Va extraire les 10 premiers caractères de chaque ligne, on obtient :
maurice:29 |
marcel:13: |
robert:75: |
yvonne:92: |
La commande ;
cut -c2-5 carnet adresse
Va extraire les deuxième au cinquième caractère de chaque ligne.
auri |
arce |
ober |
vonn |
La commande :
cut -c25-
Va extraire du 25eme caractère jusqu'à la fin de chaque ligne.
La commande :
cut -d: -f1,4 carnet adresse
Va extraire le premier et quatrième champ, le : fixant le séparateur de champ. On obtient :
maurice:Crozon |
marcel:Marseille |
robert:Paris |
yvonne:Palaiseau |
La commande :
cut -d : -f3- carnet adresse
Va extraire du troisième champ jusqu'au dernier champ, soit :
0298334432 :Crozon |
0466342233 :Marseille |
0144234452 :Paris |
0133444335 :Palaiseau |
La commande paste permet la fusion de lignes de fichiers. Les options sont les suivantes :
option | effet | |
-dx | Le caractère x définit le séparateur de champ | |
-s | Les lignes sont remplacées par des colonnes |
Soit le fichier carnet-adresse :
maurice:29:0298334432 :Crozon |
marcel:13:0466342233 :Marseille |
robert:75:0144234452 :Paris |
yvonne:92:013344433 :Palaiseau |
Et le fichier travail :
ingénieur |
pâtissier |
facteur |
vendeuse |
En tapant la commande :
paste -d : carnet-adresse travail
Vous obtenez :
maurice:29:0298334432 :Crozon :ingénieur |
marcel:13:0466342233 :Marseille:pâtissier |
robert:75:0144234452:Paris:facteur |
yvonne:92:013344433 :Palaiseau:vendeuse |
Vous pouvez évidemment rediriger le résultat vers un fichier.
Cette commande permet d'extraire les lignes communes à deux fichiers, soit le fichier carnet-adresse :
maurice:29:0298334432:Crozon |
marcel:13:0466342233:Marseille |
robert:75:0144234452:Paris |
yvonne:92:013344433:Palaiseau |
Et carnet-adresse2
olivier:29:0298333242:Brest |
marcel:13:0466342233:Marseille |
myriam:30:0434214452:Nimes |
yvonne:92:013344433:Palaiseau |
La commande :
comm carnet-adresse carnet-adresse2
Nous donnera :
marcel:13:0466342233:Marseille |
yvonne:92:013344433:Palaiseau |