Les commandes filtres

Les commandes filtres

By ronan, 17 mai, 2012

Les commandes filtres traitent un flux de données issues de l'entrée standard ou contenues dans un fichier. Elles peuvent être utilisées de manière autonome ou placées derrière un tube de communication. Les filtres s'utilisent pour la plupart de la même manière.

Syntaxe

commande_filtre -options fic1 fic2 ... ficn
commande_filtre -options -
commande_filtre -options < fichier
commande | commande_filtre -options

Visualisation de données

Visualisation de données

By ronan, 17 mai, 2012

Consultation de données, création de fichier : cat

Consultation de données, création de fichier : cat

By ronan, 17 mai, 2012

Outre la consultation de données, voici quelques exemples d'utilisation de la commande cat.

Syntaxe

cat [options] [fichiers]
Principales options
-e     Affiche le symbole "$" à la fin de chaque ligne
-t     Affiche le symbole "^I" (i majuscule) à chaque tabulation
-v     Matérialise les caractères non affichables

Exemples

Quand la commande cat ne reçoit pas de fichier en argument, elle affiche sur la sortie standard les données saisies sur l'entrée standard.

$ cat
ceci est un test     # Texte saisi au clavier sur l'entrée standard
ceci est un test     # Texte afficher automatiquement sur la sortie standard
^d
$

Ce qui est saisi sur l'entrée standard peut être enregistré dans un fichier

$ cat > fic1
ceci est un test
^d
$ cat fic1
ceci est un test
$

cat peut également concaténer des fichiers

$ cat fic1
ceci est un test
$ cat fic2
ceci est un autre test
$ cat fic1 fic2 > fic3
$ cat fic3
ceci est un test
ceci est un autre test
$

L'option -t permet de visualiser les tabulations. Celles-ci sont matérialisées par les caractères "^I" (i majuscule)

$ cat fic4
ceci    est     un      test
$ cat -t fic4
ceci^Iest^Iun^Itest
$

L'option -e permet de visualiser les fins de ligne. Celles-ci sont matérialisées par le symbole "$"

$ cat -e fic4
ceci    est     un      test$
$

L'option -A permet de visualiser tous les caractères non affichables

$ cat -A fic4
ceci^Iest^Iun^Itest$
$

Etiquettes

Valeur des octets d'un flux de données : od

Valeur des octets d'un flux de données : od

By ronan, 17 mai, 2012

La commande od permet de visualiser la valeur de chaque octet d'un fichier texte ou binaire. L'option -c permet une interprétation octet par octet. Il est ainsi possible de voir de manière exacte le contenu du fichier, de détecter l'emplacement des espaces, tabulations et caractères de sauts de ligne (CR, LF ou CR LF).

Avec od, les tabulations sont représentées par \t, les espaces par un espace, le caractère LF par \n

Exemple

$ cat fic5
ceci est un     test
et un   autre test
$ od -c fic5
0000000   c   e   c   i       e   s   t       u   n  \t   t   e   s   t
0000020  \n   e   t       u   n      \t   a   u   t   r   e       t   e
0000040   s   t  \t  \n
0000044
$

La colonne de gauche représente la position du premier caractère de la ligne dans le fichier, exprimée en octal.

Etiquettes

Filtrage de lignes : grep

Filtrage de lignes : grep

By ronan, 12 mai, 2024

La commande grep recherche une chaine de caractères dans un ou plusieurs fichiers textes et affiche à l'écran les lignes contenant cette chaine. La chaine recherchée est matérialisée par une expression régulière basique ERb (défaut) ou étendue ERe grâce à l'option -E.

Syntaxe

grep [options] expreg [fichiers...]
grep [options] -e expreg1 -e expreg2 [fichiers...]
grep [options] -f fichier_expreg [fichiers...]
Principales options :
-c affiche le nombre de lignes trouvées
-e permet de spécifier plusieurs expressions régulières
-E permet d'utiliser les ERe
-f permet de lire les expressions régulières à partir d'un fichier
-F permet de ne pas interpréter le motif de recherche comme une expression régulière
-i permet une recherche insensible à la casse
-l permet de seulement afficher les noms des fichiers contenant l'expression régulière recherchée
-n permet de numéroter les lignes trouvées
-q permet d'effectuer une recherche sans afficher le résultat à l'écran
-v permet une recherche ne contenant pas l'expression régulière
-w l'expression recherchée doit correspondre à un mot entier
-x l'expression recherchée doit correspondre à une ligne entière
-B n Affiche n lignes avant l'expression recherchée (-B pour Before)
-A n Affiche n lignes après l'expression recherchée (-A pour After)

-C n Affiche n lignes avant et après l'expression recherchée
-P permet d'utiliser des regex compatible PERL

Exemple

Utilisation du fichier depts2012.txt pour les exemples

$ cat depts2012.txt
REGION  DEP     CHEFLIEU        TNCC    NCC     NCCENR
82      01      01053   5       AIN     Ain
22      02      02408   5       AISNE   Aisne
83      03      03190   5       ALLIER  Allier
93      04      04070   4       ALPES-DE-HAUTE-PROVENCE Alpes-de-Haute-Provence
93      05      05061   4       HAUTES-ALPES    Hautes-Alpes
93      06      06088   4       ALPES-MARITIMES Alpes-Maritimes
82      07      07186   5       ARDECHE Ardèche
21      08      08105   4       ARDENNES        Ardennes
73      09      09122   5       ARIEGE  Ariège
21      10      10387   5       AUBE    Aube
91      11      11069   5       AUDE    Aude
73      12      12202   5       AVEYRON Aveyron
93      13      13055   4       BOUCHES-DU-RHONE        Bouches-du-Rhône
25      14      14118   2       CALVADOS        Calvados
83      15      15014   2       CANTAL  Cantal
54      16      16015   3       CHARENTE        Charente
54      17      17300   3       CHARENTE-MARITIME       Charente-Maritime
24      18      18033   2       CHER    Cher
74      19      19272   3       CORREZE Corrèze
94      2A      2A004   3       CORSE-DU-SUD    Corse-du-Sud
94      2B      2B033   3       HAUTE-CORSE     Haute-Corse
26      21      21231   3       COTE-D'OR       Côte-d'Or
53      22      22278   4       COTES-D'ARMOR   Côtes-d'Armor
74      23      23096   3       CREUSE  Creuse
72      24      24322   3       DORDOGNE        Dordogne
43      25      25056   2       DOUBS   Doubs
82      26      26362   3       DROME   Drôme
23      27      27229   5       EURE    Eure
24      28      28085   1       EURE-ET-LOIR    Eure-et-Loir
53      29      29232   2       FINISTERE       Finistère
91      30      30189   2       GARD    Gard
73      31      31555   3       HAUTE-GARONNE   Haute-Garonne
73      32      32013   2       GERS    Gers
72      33      33063   3       GIRONDE Gironde
91      34      34172   5       HERAULT Hérault
53      35      35238   1       ILLE-ET-VILAINE Ille-et-Vilaine
24      36      36044   5       INDRE   Indre
24      37      37261   1       INDRE-ET-LOIRE  Indre-et-Loire
82      38      38185   5       ISERE   Isère
43      39      39300   2       JURA    Jura
72      40      40192   4       LANDES  Landes
24      41      41018   0       LOIR-ET-CHER    Loir-et-Cher
82      42      42218   3       LOIRE   Loire
83      43      43157   3       HAUTE-LOIRE     Haute-Loire
52      44      44109   3       LOIRE-ATLANTIQUE        Loire-Atlantique
24      45      45234   2       LOIRET  Loiret
73      46      46042   2       LOT     Lot
72      47      47001   0       LOT-ET-GARONNE  Lot-et-Garonne
91      48      48095   3       LOZERE  Lozère
52      49      49007   0       MAINE-ET-LOIRE  Maine-et-Loire
25      50      50502   3       MANCHE  Manche
21      51      51108   3       MARNE   Marne
21      52      52121   3       HAUTE-MARNE     Haute-Marne
52      53      53130   3       MAYENNE Mayenne
41      54      54395   0       MEURTHE-ET-MOSELLE      Meurthe-et-Moselle
41      55      55029   3       MEUSE   Meuse
53      56      56260   2       MORBIHAN        Morbihan
41      57      57463   3       MOSELLE Moselle
26      58      58194   3       NIEVRE  Nièvre
31      59      59350   2       NORD    Nord
22      60      60057   5       OISE    Oise
25      61      61001   5       ORNE    Orne
31      62      62041   2       PAS-DE-CALAIS   Pas-de-Calais
83      63      63113   2       PUY-DE-DOME     Puy-de-Dôme
72      64      64445   4       PYRENEES-ATLANTIQUES    Pyrénées-Atlantiques
73      65      65440   4       HAUTES-PYRENEES Hautes-Pyrénées
91      66      66136   4       PYRENEES-ORIENTALES     Pyrénées-Orientales
42      67      67482   2       BAS-RHIN        Bas-Rhin
42      68      68066   2       HAUT-RHIN       Haut-Rhin
82      69      69123   2       RHONE   Rhône
43      70      70550   3       HAUTE-SAONE     Haute-Saône
26      71      71270   0       SAONE-ET-LOIRE  Saône-et-Loire
52      72      72181   3       SARTHE  Sarthe
82      73      73065   3       SAVOIE  Savoie
82      74      74010   3       HAUTE-SAVOIE    Haute-Savoie
11      75      75056   0       PARIS   Paris
23      76      76540   3       SEINE-MARITIME  Seine-Maritime
11      77      77288   0       SEINE-ET-MARNE  Seine-et-Marne
11      78      78646   4       YVELINES        Yvelines
54      79      79191   4       DEUX-SEVRES     Deux-Sèvres
22      80      80021   3       SOMME   Somme
73      81      81004   2       TARN    Tarn
73      82      82121   0       TARN-ET-GARONNE Tarn-et-Garonne
93      83      83137   2       VAR     Var
93      84      84007   0       VAUCLUSE        Vaucluse
52      85      85191   3       VENDEE  Vendée
54      86      86194   3       VIENNE  Vienne
74      87      87085   3       HAUTE-VIENNE    Haute-Vienne
41      88      88160   4       VOSGES  Vosges
26      89      89024   5       YONNE   Yonne
43      90      90010   0       TERRITOIRE_DE_BELFORT   Territoire de Belfort
11      91      91228   5       ESSONNE Essonne
11      92      92050   4       HAUTS-DE-SEINE  Hauts-de-Seine
11      93      93008   3       SEINE-SAINT-DENIS       Seine-Saint-Denis
11      94      94028   2       VAL-DE-MARNE    Val-de-Marne
11      95      95500   2       VAL-D'OISE      Val-d'Oise
01      971     97105   3       GUADELOUPE      Guadeloupe
02      972     97209   3       MARTINIQUE      Martinique
03      973     97302   3       GUYANE  Guyane
04      974     97411   0       LA_REUNION      La Réunion
06      976     97608   0       MAYOTTE Mayotte
$

Afficher la ligne contenant 85191
 

$ grep 85191 depts2012.txt
52      85      85191   3       VENDEE  Vendée
$

Utilisation d'une ERe et d'une recherche insensible à la casse
 

$ grep -E -i '(paris|vosges)' depts2012.txt
11      75      75056   0       PARIS   Paris
41      88      88160   4       VOSGES  Vosges
$

Afficher les lignes ne commençant pas par le chiffre 9
 

$ grep -v '^9' depts2012.txt
REGION  DEP     CHEFLIEU        TNCC    NCC     NCCENR
82      01      01053   5       AIN     Ain
22      02      02408   5       AISNE   Aisne
83      03      03190   5       ALLIER  Allier
82      07      07186   5       ARDECHE Ardèche
21      08      08105   4       ARDENNES        Ardennes
73      09      09122   5       ARIEGE  Ariège
21      10      10387   5       AUBE    Aube
73      12      12202   5       AVEYRON Aveyron
25      14      14118   2       CALVADOS        Calvados
83      15      15014   2       CANTAL  Cantal
54      16      16015   3       CHARENTE        Charente
54      17      17300   3       CHARENTE-MARITIME       Charente-Maritime
24      18      18033   2       CHER    Cher
74      19      19272   3       CORREZE Corrèze
26      21      21231   3       COTE-D'OR       Côte-d'Or
53      22      22278   4       COTES-D'ARMOR   Côtes-d'Armor
74      23      23096   3       CREUSE  Creuse
72      24      24322   3       DORDOGNE        Dordogne
43      25      25056   2       DOUBS   Doubs
82      26      26362   3       DROME   Drôme
23      27      27229   5       EURE    Eure
24      28      28085   1       EURE-ET-LOIR    Eure-et-Loir
53      29      29232   2       FINISTERE       Finistère
73      31      31555   3       HAUTE-GARONNE   Haute-Garonne
73      32      32013   2       GERS    Gers
72      33      33063   3       GIRONDE Gironde
53      35      35238   1       ILLE-ET-VILAINE Ille-et-Vilaine
24      36      36044   5       INDRE   Indre
24      37      37261   1       INDRE-ET-LOIRE  Indre-et-Loire
82      38      38185   5       ISERE   Isère
43      39      39300   2       JURA    Jura
72      40      40192   4       LANDES  Landes
24      41      41018   0       LOIR-ET-CHER    Loir-et-Cher
82      42      42218   3       LOIRE   Loire
83      43      43157   3       HAUTE-LOIRE     Haute-Loire
52      44      44109   3       LOIRE-ATLANTIQUE        Loire-Atlantique
24      45      45234   2       LOIRET  Loiret
73      46      46042   2       LOT     Lot
72      47      47001   0       LOT-ET-GARONNE  Lot-et-Garonne
52      49      49007   0       MAINE-ET-LOIRE  Maine-et-Loire
25      50      50502   3       MANCHE  Manche
21      51      51108   3       MARNE   Marne
21      52      52121   3       HAUTE-MARNE     Haute-Marne
52      53      53130   3       MAYENNE Mayenne
41      54      54395   0       MEURTHE-ET-MOSELLE      Meurthe-et-Moselle
41      55      55029   3       MEUSE   Meuse
53      56      56260   2       MORBIHAN        Morbihan
41      57      57463   3       MOSELLE Moselle
26      58      58194   3       NIEVRE  Nièvre
31      59      59350   2       NORD    Nord
22      60      60057   5       OISE    Oise
25      61      61001   5       ORNE    Orne
31      62      62041   2       PAS-DE-CALAIS   Pas-de-Calais
83      63      63113   2       PUY-DE-DOME     Puy-de-Dôme
72      64      64445   4       PYRENEES-ATLANTIQUES    Pyrénées-Atlantiques
73      65      65440   4       HAUTES-PYRENEES Hautes-Pyrénées
42      67      67482   2       BAS-RHIN        Bas-Rhin
42      68      68066   2       HAUT-RHIN       Haut-Rhin
82      69      69123   2       RHONE   Rhône
43      70      70550   3       HAUTE-SAONE     Haute-Saône
26      71      71270   0       SAONE-ET-LOIRE  Saône-et-Loire
52      72      72181   3       SARTHE  Sarthe
82      73      73065   3       SAVOIE  Savoie
82      74      74010   3       HAUTE-SAVOIE    Haute-Savoie
11      75      75056   0       PARIS   Paris
23      76      76540   3       SEINE-MARITIME  Seine-Maritime
11      77      77288   0       SEINE-ET-MARNE  Seine-et-Marne
11      78      78646   4       YVELINES        Yvelines
54      79      79191   4       DEUX-SEVRES     Deux-Sèvres
22      80      80021   3       SOMME   Somme
73      81      81004   2       TARN    Tarn
73      82      82121   0       TARN-ET-GARONNE Tarn-et-Garonne
52      85      85191   3       VENDEE  Vendée
54      86      86194   3       VIENNE  Vienne
74      87      87085   3       HAUTE-VIENNE    Haute-Vienne
41      88      88160   4       VOSGES  Vosges
26      89      89024   5       YONNE   Yonne
43      90      90010   0       TERRITOIRE_DE_BELFORT   Territoire de Belfort
11      91      91228   5       ESSONNE Essonne
11      92      92050   4       HAUTS-DE-SEINE  Hauts-de-Seine
11      93      93008   3       SEINE-SAINT-DENIS       Seine-Saint-Denis
11      94      94028   2       VAL-DE-MARNE    Val-de-Marne
11      95      95500   2       VAL-D'OISE      Val-d'Oise
01      971     97105   3       GUADELOUPE      Guadeloupe
02      972     97209   3       MARTINIQUE      Martinique
03      973     97302   3       GUYANE  Guyane
04      974     97411   0       LA_REUNION      La Réunion
06      976     97608   0       MAYOTTE Mayotte
$

Afficher les lignes commençant par un 0 ou se terminant par un s
 

$ grep -e '^0' -e 's$' depts2012.txt
93      05      05061   4       HAUTES-ALPES    Hautes-Alpes
93      06      06088   4       ALPES-MARITIMES Alpes-Maritimes
21      08      08105   4       ARDENNES        Ardennes
25      14      14118   2       CALVADOS        Calvados
43      25      25056   2       DOUBS   Doubs
73      32      32013   2       GERS    Gers
72      40      40192   4       LANDES  Landes
31      62      62041   2       PAS-DE-CALAIS   Pas-de-Calais
72      64      64445   4       PYRENEES-ATLANTIQUES    Pyrénées-Atlantiques
73      65      65440   4       HAUTES-PYRENEES Hautes-Pyrénées
91      66      66136   4       PYRENEES-ORIENTALES     Pyrénées-Orientales
11      75      75056   0       PARIS   Paris
11      78      78646   4       YVELINES        Yvelines
54      79      79191   4       DEUX-SEVRES     Deux-Sèvres
41      88      88160   4       VOSGES  Vosges
11      93      93008   3       SEINE-SAINT-DENIS       Seine-Saint-Denis
01      971     97105   3       GUADELOUPE      Guadeloupe
02      972     97209   3       MARTINIQUE      Martinique
03      973     97302   3       GUYANE  Guyane
04      974     97411   0       LA_REUNION      La Réunion
06      976     97608   0       MAYOTTE Mayotte
$

Afficher et numéroter les lignes commençant par 11
 

$ grep -n '^11' depts2012.txt
77:11   75      75056   0       PARIS   Paris
79:11   77      77288   0       SEINE-ET-MARNE  Seine-et-Marne
80:11   78      78646   4       YVELINES        Yvelines
93:11   91      91228   5       ESSONNE Essonne
94:11   92      92050   4       HAUTS-DE-SEINE  Hauts-de-Seine
95:11   93      93008   3       SEINE-SAINT-DENIS       Seine-Saint-Denis
96:11   94      94028   2       VAL-DE-MARNE    Val-de-Marne
97:11   95      95500   2       VAL-D'OISE      Val-d'Oise
$

Effectuer une recherche sans afficher le résultat. Afficher le code de retour de la commande pour vérifier l'état de la recherche.
 

$ grep -q '^11' depts2012.txt
$ echo $?
0
$

Afficher seulement le nombre de lignes trouvées
 

$ grep -c -e '^0' -e 's$' depts2012.txt
21
$

Rechercher un mot exact
 

$ grep COTE depts2012.txt # Sans l'option -w 2 lignes sont affichées
26      21      21231   3       COTE-D'OR       Côte-d'Or
53      22      22278   4       COTES-D'ARMOR   Côtes-d'Armor
$ grep -w COTE depts2012.txt # Avec l'option -w seule la ligne contenant le mot COTE s'affiche
26      21      21231   3       COTE-D'OR       Côte-d'Or
$

Afficher les lignes contenant au moins 2 caractères. Utilisation du fichier fic7 en exemple.
 

$ cat fic7
erytert
e
er
..
uhy
2
e_
34
546
$ grep '..' fic7
erytert
er
..
uhy
e_
34
546
$

Ne pas interpréter le motif comme une expression régulière.
 

$ grep -F '..' fic7
..
$

Rechercher les lignes ne contenant que des chiffres. Utilisation d'une ERe.
 

$ grep -E '^[0-9]+$' << EOF        # Sans l'option -x
5
455788
456 657588
elrerioyuerioy
sdgjhg4547457
56456456dgldkgdlfg
EOF
5
455788

$ grep -x -E '[0-9]+' << EOF        # Avec l'option -x
5
455788
456 657588
elrerioyuerioy
sdgjhg4547457
56456456dgldkgdlfg
EOF
5
455788

Utiliser un fichier pour rechercher les expressions régulières
 

$ cat rech.er
# Rechercher les lignes se terminant par la lettre t
t$
# Rechercher les lignes contenant uniquement des chiffres
^[0-9]+$
$ grep -E -f rech.er fic7
erytert
2
34
546
$

Utiliser grep derrière un tube pour rechercher un processus particulier.
 

$ ps -ef | grep apache2
root       302     1  0 06:18 ?        00:00:00 /usr/sbin/apache2 -k start
www-data   351   302  0 06:18 ?        00:00:00 /usr/sbin/apache2 -k start
www-data   352   302  0 06:18 ?        00:00:00 /usr/sbin/apache2 -k start
root      3783  3105  0 14:10 pts/0    00:00:00 grep --color=always apache2
$

Dans ce cas, la commande grep apparait également. L'utilisation de 2 tubes est donc nécessaire.

$ ps -ef | grep apache2 | grep -v grep # On demande à grep de ne pas afficher "grep"
root       302     1  0 06:18 ?        00:00:00 /usr/sbin/apache2 -k start
www-data   351   302  0 06:18 ?        00:00:00 /usr/sbin/apache2 -k start
www-data   352   302  0 06:18 ?        00:00:00 /usr/sbin/apache2 -k start
$

Afficher les 3 lignes précédant le mot "rose"
 

$ grep -B 3 rose << EOF
Pont entier étroit composer détacher politique terrain.
Angoisse soulever aventure nécessaire sans installer plante.
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
Étendue profond table beau chose.
EOF
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
$

Afficher les 3 lignes suivant le mot "rose"
 

$ grep -A 3 rose << EOF
Pont entier étroit composer détacher politique terrain.
Angoisse soulever aventure nécessaire sans installer plante.
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
Étendue profond table beau chose.
EOF
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
$

Afficher 1 ligne avant et après le mot "rose"
 

$ grep -C 1 rose << EOF
Pont entier étroit composer détacher politique terrain.
Angoisse soulever aventure nécessaire sans installer plante.
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
Étendue profond table beau chose.
EOF
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
$

Exemple d'utilisation avec l'option -P (regex compatible PERL)
 

Dans le texte suivant, le mot "nécessaire" existe 2 fois

$ grep nécessaire << EOF
Pont entier étroit composer détacher politique terrain.
Angoisse soulever aventure nécessaire sans installer plante.
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
Étendue profond table beau chose.
EOF
Angoisse soulever aventure nécessaire sans installer plante.
Inutile rose nombre nécessaire président en robe.

Recherche du mot "nécessaire" uniquement s'il est précédé du mot "nombre"
 

$ grep -P '(?<=nombre) nécessaire' << EOF
Pont entier étroit composer détacher politique terrain.
Angoisse soulever aventure nécessaire sans installer plante.
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
Étendue profond table beau chose.
EOF
Inutile rose nombre nécessaire président en robe.

Recherche du mot "nécessaire" uniquement s'il est suivi du mot "sans"
 

$ grep -P 'nécessaire (?=sans)' << EOF
Pont entier étroit composer détacher politique terrain.
Angoisse soulever aventure nécessaire sans installer plante.
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
Étendue profond table beau chose.
EOF
Angoisse soulever aventure nécessaire sans installer plante.

Recherche du mot "nécessaire" uniquement s'il n'est pas suivi du mot "sans"
 

$ grep -P 'nécessaire (?!sans)' << EOF
Pont entier étroit composer détacher politique terrain.
Angoisse soulever aventure nécessaire sans installer plante.
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
Étendue profond table beau chose.
EOF
Inutile rose nombre nécessaire président en robe.

Recherche du mot "nécessaire" uniquement s'il n'est pas précédé du mot "nombre"
 

$ grep -P '(?<!nombre) nécessaire' << EOF
Pont entier étroit composer détacher politique terrain.
Angoisse soulever aventure nécessaire sans installer plante.
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
Étendue profond table beau chose.
EOF
Angoisse soulever aventure nécessaire sans installer plante.

 

 

Etiquettes

david (not verified)

il y a 6 ans 2 mois

Bonjour,
J'ai besoin de réaliser ceci:
Rechercher uniquement le nom des fichiers:
-parmi une liste de fichiers (disons tous ceux dont le nom commence par "sma")
-ceux qui contiennent une chaine du genre "la date de la veille au format "2018/21/08" suivi de " tata" par exemple "2018/11/18 tata"
- mais également ceux (qui ne respectent pas la condition précédente) qui contiennent simplement "toto"

donc pour la première liste j'ai :
grep -l $(date -d $(expr `date +%Y%m%d` - 1) +%Y/%m/%d)" tata" sma*.*

pour la seconde j'ai:
grep "toto" sma*.*

mais je n'arrive pas à faire un 'OR' qui prenne en compte les deux.... frustrant !

Bises

Si j'ai bien compris, ceci devrait faire l'affaire

$ grep -l -e 'toto' -e "$(date -d $(expr `date +%Y%m%d` - 1) +%Y/%m/%d" tata")" sma*.*

Bonne journée

Tester (not verified)

il y a 9 mois 1 semaine

Bonjour,
Comment puis-je rechercher dans un fichier "test.lst" les lignes contenant 2 fois minimum le caractère special "|" (pipe) ?
J'ai beau chercher... je ne trouve pas :s
Merci pour votre aide

Bonjour,

La commande suivante permet d'extraire toutes les lignes dans le fichier test.lst ayant au minimum deux "|" (pipe) consécutifs.

Le caractère "|" (pipe) étant un caractère réservé dans les expressions régulières, il est nécessaire de l'échaper en le précédant du caractère "\" (antislash).

Pour indiquer que nous souhaitons au minimum 2 caractères consécutifs, il faut indiquer un quantifieur indiquant un minimum de 2 représenté par "{2,}".

Si l'on souhaite indiquer également un maximum de 3 (par exemple) on indique "{2,3}".

$ grep -E '\|{2,}' test.lst

Bonne journée

Tester (not verified)

il y a 9 mois 1 semaine

Merci pour ton aide Ronan.
Toutefois, cela ne réponds pas tout à fait à ma recherche.
En effet, je recherche les lignes contenant 2 fois le caractère "pipe" qu'il soit consécutif ou non.
Dans mon cas précis, la commande ne retournera aucun résultat car les pipes sont espacés par des mots, des ponctuations ou encore d'autres caracères spéciaux ("?" "..." par exemple).
Merci encore à toi pour ton aide

Dans ce cas, cette regex devrait correspondre à ton besoin

$ grep -P '\|(?=.+?\|)' test.lst

Il est nécessaire d'utiliser une regex compatible PERL afin d'utiliser, ce qu'on appelle, une assertion "lookahead" (?=.+?\|)

Tester (not verified)

il y a 9 mois 1 semaine

Encore une petite question...
Tu l'auras compris, je fais du tri dans un fichier. Dans ce but, j'ai supprimé la majeure partie des entrées en doublon. (celles rigoureusement identiques)
Toutefois, il subsiste des lignes presque identiques où seul un caractère ou deux diffère (un espacement, le plus souvent)
Il y aurait-il une commande permettant de ressortir les lignes ayant les 5 ou 10 premiers mots identiques ?
Merci encore à toi pour ton aide !

Tu peux utiliser AWK de cette manière

$ awk '{b = $1 $2 $3 $4 $5; a[b]=a[b]" "NR} END {for (l in a) {print l, a[l]}}' /tmp/monfichier

La variable "b" est initialisée avec les 5 premières valeurs de la ligne du fichier
On ajoute au tableau "a", indicé par la clé "b" le numéro de la ligne en cours de traitement (séparé par un espace)
Dans le bloc "END", on affiche pour chaque clé du tableau "a" la liste des valeurs correspondantes

 

Dernières lignes d'un flux de données : tail

Dernières lignes d'un flux de données : tail

By ronan, 19 mai, 2012

La commande tail permet d'afficher, par défaut, les 10 dernières lignes d'un flux de données. Cette commande est souvent utilisée pour afficher les dernières lignes d'un fichier de log.

Syntaxe

tail [options] [fichiers ...]
Principales fonctions :
-f Affiche en temps réel les ajouts en fin de fichier
-n Affiche les n dernières lignes indiquées
-n +x Affiche à partir de la ligne x jusqu'à la fin du fichier

Exemples

Afficher les 5 dernières lignes du fichier /var/log/messages

$ tail -n 5 /var/log/messages # Utilisation de -n 5
May 18 14:09:12 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="287" x-info="http://www.rsyslog.com&quot;] (re)start
May 18 15:26:36 kernel: imklog 4.6.4, log source = /proc/kmsg started.
May 18 15:26:36 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="285" x-info="http://www.rsyslog.com&quot;] (re)start
May 19 06:18:39 kernel: imklog 4.6.4, log source = /proc/kmsg started.
May 19 06:18:39 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="285" x-info="http://www.rsyslog.com&quot;] (re)start
$ tail -5 /var/log/messages # Identique mais en indiquant seulement -5
May 18 14:09:12 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="287" x-info="http://www.rsyslog.com&quot;] (re)start
May 18 15:26:36 kernel: imklog 4.6.4, log source = /proc/kmsg started.
May 18 15:26:36 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="285" x-info="http://www.rsyslog.com&quot;] (re)start
May 19 06:18:39 kernel: imklog 4.6.4, log source = /proc/kmsg started.
May 19 06:18:39 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="285" x-info="http://www.rsyslog.com&quot;] (re)start
$

Afficher à partir de la ligne 9

$ tail -n +9 /var/log/messages
May 18 12:21:34 kernel: Kernel logging (proc) stopped.
May 18 12:21:34 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="288" x-info="http://www.rsyslog.com&quot;] exiting on signal 15.
May 18 14:09:12 kernel: imklog 4.6.4, log source = /proc/kmsg started.
May 18 14:09:12 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="287" x-info="http://www.rsyslog.com&quot;] (re)start
May 18 15:26:36 kernel: imklog 4.6.4, log source = /proc/kmsg started.
May 18 15:26:36 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="285" x-info="http://www.rsyslog.com&quot;] (re)start
May 19 06:18:39 kernel: imklog 4.6.4, log source = /proc/kmsg started.
May 19 06:18:39 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="285" x-info="http://www.rsyslog.com&quot;] (re)start
$

Afficher les dernières lignes d'un fichier en temps réel

$ tail -f /var/log/messages
May 18 04:54:03 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="288" x-info="http://www.rsyslog.com&quot;] rsyslogd was HUPed, type 'lightweight'.
May 18 12:21:15 shutdown[10971]: shutting down for system halt
May 18 12:21:34 kernel: Kernel logging (proc) stopped.
May 18 12:21:34 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="288" x-info="http://www.rsyslog.com&quot;] exiting on signal 15.
May 18 14:09:12 kernel: imklog 4.6.4, log source = /proc/kmsg started.
May 18 14:09:12 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="287" x-info="http://www.rsyslog.com&quot;] (re)start
May 18 15:26:36 kernel: imklog 4.6.4, log source = /proc/kmsg started.
May 18 15:26:36 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="285" x-info="http://www.rsyslog.com&quot;] (re)start
May 19 06:18:39 kernel: imklog 4.6.4, log source = /proc/kmsg started.
May 19 06:18:39 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="285" x-info="http://www.rsyslog.com&quot;] (re)start
^C # Pour interrompre la commande
$

Etiquettes

Premières lignes d'un flux de données : head

Premières lignes d'un flux de données : head

By ronan, 19 mai, 2012

La commande head permet de visualiser, par défaut, les 10 premières lignes d'un flux de données.

Syntaxe

head [-n] [fichiers ...]
Principales options :
-n Affiche les n premières lignes

Exemple

Afficher les 5 premières lignes du fichier /var/log/messages

$ head -5 /var/log/messages
May 13 04:54:06 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="288" x-info="http://www.rsyslog.com&quot;] rsyslogd was HUPed, type 'lightweight'.
May 14 04:54:03 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="288" x-info="http://www.rsyslog.com&quot;] rsyslogd was HUPed, type 'lightweight'.
May 15 04:54:03 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="288" x-info="http://www.rsyslog.com&quot;] rsyslogd was HUPed, type 'lightweight'.
May 15 04:54:03 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="288" x-info="http://www.rsyslog.com&quot;] rsyslogd was HUPed, type 'lightweight'.
May 16 04:54:03 rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="288" x-info="http://www.rsyslog.com&quot;] rsyslogd was HUPed, type 'lightweight'.
$

Etiquettes

Duplication de la sortie standard : tee

Duplication de la sortie standard : tee

By ronan, 19 mai, 2012

La commande tee récupère un flux de données sur son entrée standard, l'envoie dans le fichier passé en argument et sur la sortie standard. Cela permet d'avoir à la fois le résultat à l'écran et dans un fichier.

Syntaxe

commande | tee [options] fichier
Principales options :
-a Ajoute à la fin de "fichier" si celui-ci existe déjà

Exemple

A partir du fichier /var/log/apache2/access.log, récupérer les lignes datant du 19/05/2012 en les affichant à l'écran et en les enregistrant dans un fichier

$ grep '19/May/2012' /var/log/apache2/access.log | tee 2012_05_19_log_apache
x.x.x.x - - [19/May/2012:14:49:03 +0200] "GET / HTTP/1.1" 200 7226 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0"
x.x.x.x - - [19/May/2012:14:49:04 +0200] "GET /node.css?7 HTTP/1.1" 200 664 "http://quennec.fr/&quot; "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0"
x.x.x.x - - [19/May/2012:14:49:04 +0200] "GET /defaults.css?7 HTTP/1.1" 200 718 "http://quennec.fr/&quot; "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0"
...
$

$ head -5 2012_05_19_log_apache
x.x.x.x - - [19/May/2012:14:49:03 +0200] "GET / HTTP/1.1" 200 7226 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0"
x.x.x.x - - [19/May/2012:14:49:04 +0200] "GET /node.css?7 HTTP/1.1" 200 664 "http://quennec.fr/&quot; "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0"
x.x.x.x - - [19/May/2012:14:49:04 +0200] "GET /defaults.css?7 HTTP/1.1" 200 718 "http://quennec.fr/&quot; "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0"
x.x.x.x - - [19/May/2012:14:49:05 +0200] "GET /layout.css?7 HTTP/1.1" 200 1444 "http://quennec.fr/&quot; "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0"
x.x.x.x - - [19/May/2012:14:49:05 +0200] "GET /style.css?7 HTTP/1.1" 200 7648 "http://quennec.fr/&quot; "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0"
$

Etiquettes

Numérotation de lignes : nl

Numérotation de lignes : nl

By ronan, 19 mai, 2012

La commande nl permet d'afficher un fichier texte en numérotant les lignes. Par défaut, les lignes vides ne sont pas numérotées.

Syntaxe

nl [options] [fichiers ...]
Principales options :
-b a Numéroter toutes les lignes
-b t Ne pas numéroter les lignes vides

Exemple

$ nl fic7
     1  erytert
 
     2  e
     3  er
     4  ..
     5  uhy
 
     6  2
     7  e_
     8  34
     9  546
 
$

Numéroter toutes les lignes, mêmes vides

$ nl -ba fic7
     1  erytert
     2
     3  e
     4  er
     5  ..
     6  uhy
     7
     8  2
     9  e_
    10  34
    11  546
    12
$

Etiquettes

Présentation d'un flux de données : pr

Présentation d'un flux de données : pr

By ronan, 19 mai, 2012

La commande pr affiche un texte de manière formatée. Par défaut, chaque page fait 66 lignes, dont 5 lignes d'en-tête et 5 ligne de pied de page.

Syntaxe

pr [options] [fichiers ...]
Quelques options :
-c nb Disposition en nb colonnes
-h texte Ecrire un  titre en en-tête
-l nb Nombre de lignes d'une page

Exemples

$ cat depts2012
CP : 01053      DEPT : AIN
CP : 02408      DEPT : AISNE
CP : 03190      DEPT : ALLIER
CP : 04070      DEPT : ALPES-DE-HAUTE-PROVENCE
CP : 05061      DEPT : HAUTES-ALPES
CP : 06088      DEPT : ALPES-MARITIMES
CP : 07186      DEPT : ARDECHE
CP : 08105      DEPT : ARDENNES
CP : 09122      DEPT : ARIEGE
CP : 10387      DEPT : AUBE
CP : 11069      DEPT : AUDE
CP : 12202      DEPT : AVEYRON
CP : 13055      DEPT : BOUCHES-DU-RHONE
CP : 14118      DEPT : CALVADOS
CP : 15014      DEPT : CANTAL
CP : 16015      DEPT : CHARENTE
CP : 17300      DEPT : CHARENTE-MARITIME
CP : 18033      DEPT : CHER
CP : 19272      DEPT : CORREZE
CP : 21231      DEPT : COTE-D'OR
CP : 22278      DEPT : COTES-D'ARMOR
CP : 23096      DEPT : CREUSE
CP : 24322      DEPT : DORDOGNE
CP : 25056      DEPT : DOUBS
CP : 26362      DEPT : DROME
CP : 27229      DEPT : EURE
CP : 28085      DEPT : EURE-ET-LOIR
CP : 29232      DEPT : FINISTERE
CP : 30189      DEPT : GARD
CP : 31555      DEPT : HAUTE-GARONNE
CP : 32013      DEPT : GERS
CP : 33063      DEPT : GIRONDE
CP : 34172      DEPT : HERAULT
CP : 35238      DEPT : ILLE-ET-VILAINE
CP : 36044      DEPT : INDRE
CP : 37261      DEPT : INDRE-ET-LOIRE
CP : 38185      DEPT : ISERE
CP : 39300      DEPT : JURA
CP : 40192      DEPT : LANDES
CP : 41018      DEPT : LOIR-ET-CHER
CP : 42218      DEPT : LOIRE
CP : 43157      DEPT : HAUTE-LOIRE
CP : 44109      DEPT : LOIRE-ATLANTIQUE
CP : 45234      DEPT : LOIRET
CP : 46042      DEPT : LOT
CP : 47001      DEPT : LOT-ET-GARONNE
CP : 48095      DEPT : LOZERE
CP : 49007      DEPT : MAINE-ET-LOIRE
CP : 50502      DEPT : MANCHE
CP : 51108      DEPT : MARNE
CP : 52121      DEPT : HAUTE-MARNE
CP : 53130      DEPT : MAYENNE
CP : 54395      DEPT : MEURTHE-ET-MOSELLE
CP : 55029      DEPT : MEUSE
CP : 56260      DEPT : MORBIHAN
CP : 57463      DEPT : MOSELLE
CP : 58194      DEPT : NIEVRE
CP : 59350      DEPT : NORD
CP : 60057      DEPT : OISE
CP : 61001      DEPT : ORNE
CP : 62041      DEPT : PAS-DE-CALAIS
CP : 63113      DEPT : PUY-DE-DOME
CP : 64445      DEPT : PYRENEES-ATLANTIQUES
CP : 65440      DEPT : HAUTES-PYRENEES
CP : 66136      DEPT : PYRENEES-ORIENTALES
CP : 67482      DEPT : BAS-RHIN
CP : 68066      DEPT : HAUT-RHIN
CP : 69123      DEPT : RHONE
CP : 70550      DEPT : HAUTE-SAONE
CP : 71270      DEPT : SAONE-ET-LOIRE
CP : 72181      DEPT : SARTHE
CP : 73065      DEPT : SAVOIE
CP : 74010      DEPT : HAUTE-SAVOIE
CP : 75056      DEPT : PARIS
CP : 76540      DEPT : SEINE-MARITIME
CP : 77288      DEPT : SEINE-ET-MARNE
CP : 78646      DEPT : YVELINES
CP : 79191      DEPT : DEUX-SEVRES
CP : 80021      DEPT : SOMME
CP : 81004      DEPT : TARN
CP : 82121      DEPT : TARN-ET-GARONNE
CP : 83137      DEPT : VAR
CP : 84007      DEPT : VAUCLUSE
CP : 85191      DEPT : VENDEE
CP : 86194      DEPT : VIENNE
CP : 87085      DEPT : HAUTE-VIENNE
CP : 88160      DEPT : VOSGES
CP : 89024      DEPT : YONNE
CP : 90010      DEPT : TERRITOIRE_DE_BELFORT
CP : 91228      DEPT : ESSONNE
CP : 92050      DEPT : HAUTS-DE-SEINE
CP : 93008      DEPT : SEINE-SAINT-DENIS
CP : 94028      DEPT : VAL-DE-MARNE
CP : 95500      DEPT : VAL-D'OISE
CP : 97105      DEPT : GUADELOUPE
CP : 97209      DEPT : MARTINIQUE
CP : 97302      DEPT : GUYANE
CP : 97411      DEPT : LA_REUNION
CP : 97608      DEPT : MAYOTTE
$

$ pr depts2012 | more
 
 
2012-05-19 17:19                    depts2012                     Page 1
 
 
CP : 01053      DEPT : AIN
CP : 02408      DEPT : AISNE
CP : 03190      DEPT : ALLIER
CP : 04070      DEPT : ALPES-DE-HAUTE-PROVENCE
CP : 05061      DEPT : HAUTES-ALPES
CP : 06088      DEPT : ALPES-MARITIMES
CP : 07186      DEPT : ARDECHE
CP : 08105      DEPT : ARDENNES
CP : 09122      DEPT : ARIEGE
CP : 10387      DEPT : AUBE
CP : 11069      DEPT : AUDE
CP : 12202      DEPT : AVEYRON
CP : 13055      DEPT : BOUCHES-DU-RHONE
CP : 14118      DEPT : CALVADOS
CP : 15014      DEPT : CANTAL
CP : 16015      DEPT : CHARENTE
CP : 17300      DEPT : CHARENTE-MARITIME
CP : 18033      DEPT : CHER
CP : 19272      DEPT : CORREZE
...
$

Présentation du fichier en 2 colonnes de 15 lignes par page avec un titre sur chaque page

$ pr -l 15 -c2 -h "Liste des departements" depts2012 | more
 
 
2012-05-19 17:19              Liste des departements              Page 1
 
 
CP : 01053      DEPT : AIN          CP : 06088  DEPT : ALPES-MARITI
CP : 02408      DEPT : AISNE        CP : 07186  DEPT : ARDECHE
CP : 03190      DEPT : ALLIER       CP : 08105  DEPT : ARDENNES
CP : 04070      DEPT : ALPES-DE-HAU CP : 09122  DEPT : ARIEGE
CP : 05061      DEPT : HAUTES-ALPES CP : 10387  DEPT : AUBE
 
 
 
 
 
 
 
2012-05-19 17:19              Liste des departements              Page 2
 
 
CP : 11069      DEPT : AUDE         CP : 16015  DEPT : CHARENTE
CP : 12202      DEPT : AVEYRON      CP : 17300  DEPT : CHARENTE-MAR
CP : 13055      DEPT : BOUCHES-DU-R CP : 18033  DEPT : CHER
CP : 14118      DEPT : CALVADOS     CP : 19272  DEPT : CORREZE
CP : 15014      DEPT : CANTAL       CP : 21231  DEPT : COTE-D'OR
...
$

Etiquettes

Traitement de données

Comptage de lignes, de mots et de caractères : wc

Comptage de lignes, de mots et de caractères : wc

By ronan, 19 mai, 2012

La commande wc compte le nombre de lignes, de mots et de caractères.

Syntaxe

wc [OPTION]... [FILE]...
Principales options :
-l Compter le nombre de lignes
-w Compter le nombre de mots
-c Compter le nombre d'octets
-m Compter le nombre de caractères

Exemples

Nombre de lignes, mots et caractères du fichier depts2012

$ wc depts2012
  99  594 2769 depts2012
$

Nombre de lignes uniquement

$ wc -l depts2012
99 depts2012
$

Nombre de mots uniquement

$ wc -w depts2012
594 depts2012
$

Nombre de caractères uniquement

$ wc -m depts2012
2769 depts2012
$

Nombre de caractères contenus dans un texte saisi au clavier (attention au saut de ligne ajouté par la commande echo)

$ read texte
ceci est un texte
$ echo "$texte" | wc -m
18     # Le saut de ligne est comptabilisé
$ echo -e "$texte\c" | wc -m
17     # Avec l'option -e et \c le saut de ligne n'est pas comptabilisé
$ echo -n "$texte" | wc -m
17     # Idem mais avec l'option -n
$

Etiquettes

thill (not verified)

il y a 10 ans 1 mois

Concis clair et efficace. Merci

Isoka (not verified)

il y a 5 ans 7 mois

Salut, tout d'abord merci pour cet article très éclairant!

Je me permet juste une remarque:

Sur le dernier exemple, tu dis vouloir compter le nombre de caractères mais tu utilise le petit "c" qui se réfère plutôt au calcul du nombre d'octets si j'ai bien compris, n'aurais-tu pas du utiliser le grand "C" à la place pour compter les caractères?

Merci encore

il est vrai également que dans l'exemple, comme il n'y a aucun caractère accentué, le résultat est identique.

Pour éviter toute ambiguïté, il vaut mieux utiliser l'option -m pour compter avec certitude le nombre de caractères.

Attention toutefois à l'option -C qui n'est à priori pas disponible dans tous les environnements.

Extraction de caractères : cut

Extraction de caractères : cut

By ronan, 22 mai, 2012

La commande cut sert à récupérer des caractères ou des champs d'une ligne.

Syntaxe

Couper par caractères

cut -c3 [fichiers ...] Le 3ème caractère
cut -c3-5 [fichiers ...] Du 3ème au 5ème caractère
cut -c-3 [fichiers ...] Jusqu'au 3ème caractère
cut -c3- [fichiers ...] A partir du 3ème caractère
cut -c3,10 [fichiers ...] Le 3ème et le 10ème caractère

Couper par champs

cut -dsep -f3 [fichiers ...] Le 3ème champ
cut -dsep -f3-5 [fichiers ...] Du 3ème au 5ème champ
cut -dsep -f-3 [fichiers ...] Jusqu'au 3ème champ
cut -dsep -f3- [fichiers ...] A partir du 3ème champ
cut -dsep -f3,10 [fichiers ...] Le 3ème et le 10ème champ

L'option -d permet d'exprimer le caractère séparateur de champ. Le caractère séparateur par défaut est la tabulation.

Exemples

Couper les 2 Premiers chiffres d'un code postal

$ echo 44150 | cut -c1-2
44
$

Afficher le 1er, 6ème et 7ème champs des 5 dernières lignes du fichier /etc/passwd

$ tail -5 /etc/passwd | cut -d: -f1,6,7
nobody:/nonexistent:/bin/sh
libuuid:/var/lib/libuuid:/bin/sh
postfix:/var/spool/postfix:/bin/false
sshd:/var/run/sshd:/usr/sbin/nologin
mysql:/var/lib/mysql:/bin/false
$

Si le caractère séparateur est un caractère spécial du shell, il faut le protéger.

$ ligne="val1|val2|val3"
$ echo $ligne | cut -d'|' -f1
val1
$

Etiquettes

Jaal (not verified)

il y a 8 ans 3 mois

J'aimerais Afficher dans chaque ligne les cinq premiers caracteres et les trois derniers caracteres de chaque ligne de mon fichier texte en les separant par un espace.

Bonjour,

Pour ton problème, je te propose d'utiliser à la place de la commande cut, la commande sed.

Exemple:

$ sed -r 's/^(.{5}).*(.{3})$/\1 \2/' <fichier>

Explications:

La commande sed permet de modifier le contenu d'un fichier à l'aide de regex.
L'option -r permet d'utiliser les regex étendues.
La commande s/regexp/replacement/ substitue le contenu du fichier par replacement en utilisant la regex regexp.
Je te renvoie ici pour plus d'explications sur la commande sed.

remi (not verified)

il y a 6 ans 8 mois

In reply to by ronan

Bonjour,

Est-il possible de faire la même opération mais de sélectionner des colonnes et non des caractères?

merci

ronan

il y a 6 ans 8 mois

In reply to by remi (not verified)

si tes champs sont de longueurs fixes ou avec un séparateur.

Par exemple, avec ce fichier (je pars du principe que j'ai 6 champs de longueurs fixes [5,10,10,1,3,10]):

$ cat file
Borne012345678901234567890AAA0123456789
Corne012345678901234567890AAA0123456789
Dorne012345678901234567890AAA0123456789
Borne012345678901234567890AAA0123456789
Eorne012345678901234567890AAA0123456789
Borne012345678901234567890AAA0123456789
Forne012345678901234567890AAA0123456789
Gorne012345678901234567890AAA0123456789
Horne012345678901234567890AAA0123456789
Iorne012345678901234567890AAA0123456789
Borne012345678901234567890AAA0123456789
Borne012345678901234567890AAA0123456789
Borne012345678901234567890AAA0123456789
Borne012345678901234567890AAA0123456789
Jorne012345678901234567890AAA0123456789

Je peux faire ceci:

$ sed -r 's/^(.{5})(.{10})(.{10})(.)(.{3})(.{10})$/\1 \2 \3 \4 \5 \6/g' file
Borne 0123456789 0123456789 0 AAA 0123456789
Corne 0123456789 0123456789 0 AAA 0123456789
Dorne 0123456789 0123456789 0 AAA 0123456789
Borne 0123456789 0123456789 0 AAA 0123456789
Eorne 0123456789 0123456789 0 AAA 0123456789
Borne 0123456789 0123456789 0 AAA 0123456789
Forne 0123456789 0123456789 0 AAA 0123456789
Gorne 0123456789 0123456789 0 AAA 0123456789
Horne 0123456789 0123456789 0 AAA 0123456789
Iorne 0123456789 0123456789 0 AAA 0123456789
Borne 0123456789 0123456789 0 AAA 0123456789
Borne 0123456789 0123456789 0 AAA 0123456789
Borne 0123456789 0123456789 0 AAA 0123456789
Borne 0123456789 0123456789 0 AAA 0123456789
Jorne 0123456789 0123456789 0 AAA 0123456789

ou alors avec un fichier ayant un séparateur de champ ";"

$ cat file2
Borne;0123456789;0123456789;0;AAA;0123456789
Corne;0123456789;0123456789;0;AAA;0123456789
Dorne;0123456789;0123456789;0;AAA;0123456789
Borne;0123456789;0123456789;0;AAA;0123456789
Eorne;0123456789;0123456789;0;AAA;0123456789
Borne;0123456789;0123456789;0;AAA;0123456789
Forne;0123456789;0123456789;0;AAA;0123456789
Gorne;0123456789;0123456789;0;AAA;0123456789
Horne;0123456789;0123456789;0;AAA;0123456789
Iorne;0123456789;0123456789;0;AAA;0123456789
Borne;0123456789;0123456789;0;AAA;0123456789
Borne;0123456789;0123456789;0;AAA;0123456789
Borne;0123456789;0123456789;0;AAA;0123456789
Borne;0123456789;0123456789;0;AAA;0123456789
Jorne;0123456789;0123456789;0;AAA;0123456789
$ sed -r 's/;/ /g' file2
Borne 0123456789 0123456789 0 AAA 0123456789
Corne 0123456789 0123456789 0 AAA 0123456789
Dorne 0123456789 0123456789 0 AAA 0123456789
Borne 0123456789 0123456789 0 AAA 0123456789
Eorne 0123456789 0123456789 0 AAA 0123456789
Borne 0123456789 0123456789 0 AAA 0123456789
Forne 0123456789 0123456789 0 AAA 0123456789
Gorne 0123456789 0123456789 0 AAA 0123456789
Horne 0123456789 0123456789 0 AAA 0123456789
Iorne 0123456789 0123456789 0 AAA 0123456789
Borne 0123456789 0123456789 0 AAA 0123456789
Borne 0123456789 0123456789 0 AAA 0123456789
Borne 0123456789 0123456789 0 AAA 0123456789
Borne 0123456789 0123456789 0 AAA 0123456789
Jorne 0123456789 0123456789 0 AAA 0123456789

 

Beñat (not verified)

il y a 5 ans 7 mois

In reply to by ronan

sed ne fonctionnera pas si plus de 9 champs à extraire ;-( any other solution ?

ronan

il y a 5 ans 7 mois

In reply to by Beñat (not verified)

un script Python fera très bien l'affaire.

BaTo (not verified)

il y a 7 ans 11 mois

Bonjour,
J'ai besoin d'extraire une partie d'une variable à partir du 2ème caractères jusqu'à la fin de la variable.
Pour cela j'utilise, par exemple:
var=-136.5
var2=`echo $var | cut -c 2-${#var}`
echo $var2 donne: 136 5 donc pas de problème.

Mais lorsque je l'utilise dans un script, la variable "longueur" dans la commande cut n'est pas prise en compte:
cut: invalid byte, character or field list
Try `cut --help' for more information

Si le 2ème chiffre dans la commande est écrit en "dur", pas de problème dans le script, mais vu que mes variables n'ont pas toutes la même longueur, j'ai besoin d'utiliser la longueur de la variable dans la commande...mais là impossible...

Pouvez-vous m'aider?

Merci!

Bonjour,

L'erreur que vous avez est bizarre car j'ai effectué un test de mon coté et ça fonctionne correctement.

Toujours est-il que comme indiqué à la quatrième ligne du tableau "Couper par caractères", dans le cas où l'on souhaite extraire tout le restant de la chaine, il n'est pas nécessaire d'indiquer une position de fin.
Cela réglera votre problème malgré que de mon coté ça fonctionne bien.

Voici le script que j'ai écrit pour le test

$ cat test
#!/bin/bash
# Permet d'activer les logs lors de l'exécution
set -x

echo "Init variable A"
A=-136.5
echo "Longueur de la variable A"
B=${#A}
echo "Premier cut sans indiquer la dernière position"
C=`echo $A | cut -c2-`
echo "Second cut en indiquant la dernière position"
D=`echo $A | cut -c2-${#A}`

Voici le résultat

$ ./test
+ echo 'Init variable A'
Init variable A
+ A=-136.5
+ echo 'Longueur de la variable A'
Longueur de la variable A
+ B=6
+ echo 'Premier cut sans indiquer la dernière position'
Premier cut sans indiquer la dernière position
++ echo -136.5
++ cut -c2-
+ C=136.5
+ echo 'Second cut en indiquant la dernière position'
Second cut en indiquant la dernière position
++ echo -136.5
++ cut -c2-6
+ D=136.5

Dans le résultat de l'exécution, on voit bien que les deux cut ont fonctionné comme voulu.
Les deux variables C et D ont la même valeur.
Il peut s'agir d'une erreur toute bête dans votre script.
Pour le vérifier, pensez à activer le debug du script avec la commande "set -x".
C'est vraiment super pratique pour voir où il y a un bug.

BaTo (not verified)

il y a 7 ans 11 mois

In reply to by ronan

Bonjour,

Merci de votre réponse.
Effectivement sans renseigner la position de fin cela fonctionne très bien.
Je n'avais tout simplement pas d'erreur, car en console cela fonctionnait mais pas en script. Mes variables étant alimentées par résultat de requête SQL dans le script, il arrivait qu'un résultat soit null, dans ce cas la longueur de la variable est 0 et un cut -c 2-0 n'est bien évidemment pas accepté...
Excusez mon erreur!

Bien cordialement

celine (not verified)

il y a 3 ans 7 mois

bonjour, je souhaite vous demander de l'aide svp je débute en shell
je vous remercie d'avnce

Frédéric (not verified)

il y a 1 an 10 mois

J'aimerais dans un log recuperer tout les segments compris entre 2 mots précis. Est ce possible ?

Oui voici un exemple :

Emetteur
Entrée A
Entrée B
Dossier modifie

Emetteur
Entrée C
Entrée D
Dossier inconnu

Emetteur
Entrée A
Entrée C
Dossier modifie

Emetteur
Entrée B
Entrée X
Dossier inconnu

Voilà, ce que je souhaiterais, c'est ne garder que les dossiers inconnus :

Emetteur
Entrée C
Entrée D
Dossier inconnu

Emetteur
Entrée B
Entrée X
Dossier inconnu

Le problème étant que faire un cat Fichier.log | awk '/Emetteur/,/Dossier inconnu/' > DossierInconnu.log ne suffit pas, car il me prend trop de chose.

$ tac Fichier.log | sed -n '/Dossier inconnu/,/Emetteur/p' | tac
Emetteur
Entrée C
Entrée D
Dossier inconnu
Emetteur
Entrée B
Entrée X
Dossier inconnu

Merci Ronan,
J'ai réussi a le faire avec awk au final, je partage l'info au cas ou ça intéresse du monde ici :
awk '/^Emetteur/{n=1} {lines[n++]=$0} /^Dossier inconnu/{for(i=1;i<n;++i) print lines[i]}' Event.log

juste pour info, le "|tac" a la fin de ton sed sert a faire quoi s'il te plait ?

ronan

il y a 1 an 10 mois

In reply to by Anonyme (not verified)

J'ai pas eu le temps de tester ta solution.
Pour ce qui est de la mienne, le premier "tac" permet d'inverser le contenu du fichier, de cette façon, il est plus simple de trouver en premier "Dossier inconnu" étant donné que tous les blocs d'information commencent tous par "Emetteur" et enfin, pour finir, le deuxième et dernier "tac" permet de remettre dans le bon ordre les éléments trouvés.

Tri de données : sort

Tri de données : sort

By ronan, 22 mai, 2012

La commande sort permet de trier les lignes d'un flux de données textes.

Syntaxe

sort [options] -k champs[.car] [options], champ[.car] [options] [fichiers ...]
Principales options :
-b : Option à utiliser lorsque le critère de tri est alphanumérique et que les valeurs dans les champs sont calés à droite et complétés avec des espaces à gauche
-k : champ [.car] [options] , champ [.car] [options] Spécifier le ou les champs à prendre en compte en tant que critère de tri. Le critère de tri peut commencer ou finir à une certaine position de caractère du champ.
-n : Préciser que le critère de tri doit être traité comme valeur numérique et non comme chaine de caractères.
-r : Demander un tri décroissant
-t sep : Préciser le caractère séparateur de champs (espace par défaut)
-u : Suppression des doublons

 

Exemples

Utilisation du fichier /etc/passwd

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
postfix:x:101:104::/var/spool/postfix:/bin/false
sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin
mysql:x:103:108:MySQL Server,,,:/var/lib/mysql:/bin/false
$

Trier le fichier sans aucune option.
Le fichier est trié en fonction de la première lettre de chaque ligne.

$ sort /etc/passwd
backup:x:34:34:backup:/var/backups:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
games:x:5:60:games:/usr/games:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mysql:x:103:108:MySQL Server,,,:/var/lib/mysql:/bin/false
news:x:9:9:news:/var/spool/news:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
postfix:x:101:104::/var/spool/postfix:/bin/false
proxy:x:13:13:proxy:/bin:/bin/sh
root:x:0:0:root:/root:/bin/bash
sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
sys:x:3:3:sys:/dev:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
$

Trier le fichier sur le 3ème champ (valeurs numériques).
Le tri est alphanumérique.

$ sort -t: -k 3,3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
postfix:x:101:104::/var/spool/postfix:/bin/false
sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin
mysql:x:103:108:MySQL Server,,,:/var/lib/mysql:/bin/false
proxy:x:13:13:proxy:/bin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
$

Pour que le tri soit numérique il faut ajouter l'option -n

$ sort -t: -k 3,3 -n /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
postfix:x:101:104::/var/spool/postfix:/bin/false
sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin
mysql:x:103:108:MySQL Server,,,:/var/lib/mysql:/bin/false
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
$

Exemple de tri sur un fichier dont le champ servant de critère de tri est alphanumérique et complété avec des espaces à gauche.

$ cat listeFic
-rw-r--r-- 1 root root 17 May 17 21:31       fic1
-rw-r--r-- 1 root root 17 May 17 21:36       fic4
-rw-r--r-- 1 root root 23 May 17 21:33       fic2
-rw-r--r-- 1 root root 35 May 19 15:02       fic7
-rw-r--r-- 1 root root 36 May 17 21:52       fic5
-rw-r--r-- 1 root root 40 May 17 21:33       fic3
-rw-r--r-- 1 root root 48 May 19 17:59       fic8
-rw-r--r-- 1 root root 74 May 17 22:01   fic6.txt
$

Tri sur le champ 9. Valeurs alphanumériques complétées avec des espaces à gauche. Sans l'option -b, le tri est mal réalisé.

$ sort -k 9,9 listeFic
-rw-r--r-- 1 root root 17 May 17 21:31       fic1
-rw-r--r-- 1 root root 23 May 17 21:33       fic2
-rw-r--r-- 1 root root 40 May 17 21:33       fic3
-rw-r--r-- 1 root root 17 May 17 21:36       fic4
-rw-r--r-- 1 root root 36 May 17 21:52       fic5
-rw-r--r-- 1 root root 35 May 19 15:02       fic7
-rw-r--r-- 1 root root 48 May 19 17:59       fic8
-rw-r--r-- 1 root root 74 May 17 22:01   fic6.txt
$

Idem mais avec l'option -b

$ sort -b -k 9,9 listeFic
-rw-r--r-- 1 root root 17 May 17 21:31       fic1
-rw-r--r-- 1 root root 23 May 17 21:33       fic2
-rw-r--r-- 1 root root 40 May 17 21:33       fic3
-rw-r--r-- 1 root root 17 May 17 21:36       fic4
-rw-r--r-- 1 root root 36 May 17 21:52       fic5
-rw-r--r-- 1 root root 74 May 17 22:01   fic6.txt
-rw-r--r-- 1 root root 35 May 19 15:02       fic7
-rw-r--r-- 1 root root 48 May 19 17:59       fic8
$

Utilisation de 2 critères de tri: Tri sur le champ 7 (numérique) et sur le champ 9 (alphanumérique)

$ sort -k 7n,7 -k 9b,9 listeFic
-rw-r--r-- 1 root root 74 May 15 22:01   fic6.txt
-rw-r--r-- 1 root root 35 May 15 15:02       fic7
-rw-r--r-- 1 root root 17 May 17 21:31       fic1
-rw-r--r-- 1 root root 23 May 17 21:33       fic2
-rw-r--r-- 1 root root 40 May 17 21:33       fic3
-rw-r--r-- 1 root root 17 May 17 21:36       fic4
-rw-r--r-- 1 root root 36 May 17 21:52       fic5
-rw-r--r-- 1 root root 48 May 19 17:59       fic8
$

Trier un fichier suivant les mois de l'année

$ cat fic91
April
August
December
February
January
July
June
March
May
November
October
September
$

$ sort -M fic91
January
February
March
April
May
June
July
August
September
October
November
December
$

Etiquettes

OTMANE (not verified)

il y a 7 ans 1 mois

j'ai un fichier txt désordonnée je veux le tri pour mettre les meme lignes a la fin qu'il faut suprimer
AREA/PROJECT:17REN3D DATE:01/12/2017
CLIENT :SONATRACH SURVEY METHOD:DGPS
CONTRACTOR: ENAGEO INSTRUMENTATION:TRIMBLE-R7
COUNTRY: ALGERIA GRID SYSTEM: Transverse Mercator
COUNTY: ELBORMA SOURCE INTERVAL: 50m
CREW NUMBER:EGS-120 UNITS: Meters
FILE CONTENTS:SRC
GRID DESIGNATION: ZONE: 32
LINE NUMBER:Sw063-066 TYPE SURVEY:3D
STATE: OUARGLA DATUM: WGS84
SURVEYOR: STAFF EGS-120 RECEIVER INTERVAL:50m
AREA/PROJECT:17REN3D DATE:01/12/2017
CLIENT :SONATRACH SURVEY METHOD:DGPS
CONTRACTOR: ENAGEO INSTRUMENTATION:TRIMBLE-R7
COUNTRY: ALGERIA GRID SYSTEM: Transverse Mercator
COUNTY: ELBORMA SOURCE INTERVAL: 50m
CREW NUMBER:EGS-120 UNITS: Meters
FILE CONTENTS:SRC
GRID DESIGNATION: ZONE: 32
LINE NUMBER:Sw063-066 TYPE SURVEY:3D
STATE: OUARGLA DATUM: WGS84
SURVEYOR: STAFF EGS-120 RECEIVER INTERVAL:50m
AREA/PROJECT:17REN3D DATE:01/12/2017
CLIENT :SONATRACH SURVEY METHOD:DGPS
CONTRACTOR: ENAGEO INSTRUMENTATION:TRIMBLE-R7
COUNTRY: ALGERIA GRID SYSTEM: Transverse Mercator
COUNTY: ELBORMA SOURCE INTERVAL: 50m
CREW NUMBER:EGS-120 UNITS: Meters
FILE CONTENTS:SRC
GRID DESIGNATION: ZONE: 32
LINE NUMBER:Sw063-066 TYPE SURVEY:3D
STATE: OUARGLA DATUM: WGS84
SURVEYOR: STAFF EGS-120 RECEIVER INTERVAL:50m
Sw063-066 51411311 31113311N007350543E 365166334518020 2128
Sw063-066 51411312 31113431N007350642E 365192934518385 2073
Sw063-066 51411313 31113551N007350756E 365223434518752 2048
Sw063-066 51411314 31113686N007350896E 365261134519163 2111
Sw063-066 51411315 31113812N007351012E 365292434519547 2069
Sw063-066 51411316 31113930N007351130E 365324134519907 2003
Sw063-066 51411317 31114054N007351252E 365356934520284 1938
Sw063-066 51411318 31114182N007351369E 365388334520673 1948
Sw063-066 51411319 31114310N007351486E 365419834521064 1967
Sw063-066 51411320 31114432N007351595E 365449034521437 1993
Sw063-066 51411321 31114561N007351715E 365481234521829 2007
Sw063-066 51411322 31114688N007351838E 365514434522215 2016
Sw063-066 51411323 31114817N007351962E 365547734522609 2024
Sw063-066 51411324 31114943N007352083E 365580234522992 2049
Sw063-066 51411325 31115072N007352198E 365611234523386 2070
Sw063-066 51411326 31115197N007352316E 365642934523768 2057
Sw063-066 51411327 31115310N007352434E 365674634524112 2029
Sw063-066 51411328 31115442N007352558E 365708034524514 1983
Sw063-066 51411329 31115571N007352674E 365739034524905 1960
Sw063-066 51411330 31115697N007352795E 365771634525290 1959
Sw063-066 51511311 31112788N007351257E 365353334516386 2108
Sw063-066 51511312 31112917N007351386E 365387734516777 2106
Sw063-066 51511313 31113044N007351502E 365419134517166 2120
Sw063-066 51511314 31113171N007351624E 365451834517554 2089
Sw063-066 51511315 31113293N007351737E 365482134517925 2062
Sw063-066 51511316 31113420N007351867E 365516934518309 2019
Sw063-066 51511317 31113551N007351988E 365549734518709 1994
AREA/PROJECT:17REN3D DATE:01/12/2017
CLIENT :SONATRACH SURVEY METHOD:DGPS
CONTRACTOR: ENAGEO INSTRUMENTATION:TRIMBLE-R7
COUNTRY: ALGERIA GRID SYSTEM: Transverse Mercator
COUNTY: ELBORMA SOURCE INTERVAL: 50m
CREW NUMBER:EGS-120 UNITS: Meters
FILE CONTENTS:SRC
GRID DESIGNATION: ZONE: 32
LINE NUMBER:Sw063-066 TYPE SURVEY:3D
STATE: OUARGLA DATUM: WGS84
SURVEYOR: STAFF EGS-120 RECEIVER INTERVAL:50m
Sw063-066 51511318 31113671N007352101E 365580034519076 2004
Sw063-066 51511319 31113798N007352216E 365610934519462 2011
Sw063-066 51511320 31113927N007352338E 365643734519856 2020
Sw063-066 51511321 31114051N007352461E 365676734520232 2045
Sw063-066 51511322 31114176N007352587E 365710734520614 2043
Sw063-066 51511323 31114302N007352703E 365741734520999 2061
Sw063-066 51511324 31114435N007352825E 365774634521404 2090
Sw063-066 51511325 31114559N007352937E 365804634521783 2102
Sw063-066 51511326 31114675N007353054E 365836334522134 2096
Sw063-066 51511327 31114809N007353182E 365870634522544 2062
Sw063-066 51511328 31114931N007353299E 365902034522914 2025
Sw063-066 51511329 31115061N007353410E 365931834523313 2015
Sw063-066 51511330 31115182N007353528E 365963734523681 2048
Sw063-066 51611311 31112286N007351992E 365545734514815 2047
Sw063-066 51611312 31112405N007352116E 365579134515178 2044
Sw063-066 51611313 31112532N007352239E 365612134515565 2042
Sw063-066 51611314 31112658N007352359E 365644334515949 2037
Sw063-066 51611315 31112782N007352475E 365675534516325 2031
Sw063-066 51611316 31112908N007352592E 365706934516708 2004
Sw063-066 51611317 31113035N007352716E 365740234517097 1998
Sw063-066 51611318 31113163N007352833E 365771834517486 2009
Sw063-066 51611319 31113280N007352942E 365800934517844 2021
Sw063-066 51611320 31113411N007353063E 365833634518243 2025
Sw063-066 51611321 31113533N007353179E 365864934518615 2029
Sw063-066 51611322 31113660N007353302E 365897934519000 2032
Sw063-066 51611323 31113787N007353421E 365929934519389 2036
Sw063-066 51611324 31113914N007353540E 365961834519774 2054
Sw063-066 51611325 31114037N007353665E 365995434520150 2062
Sw063-066 51611326 31114168N007353784E 366027434520550 2078
Sw063-066 51611327 31114296N007353903E 366059434520938 2088
Sw063-066 51611328 31114420N007354033E 366094434521316 2062
Sw063-066 51611329 31114537N007354137E 366122334521673 2051
Sw063-066 51611330 31114667N007354258E 366154934522069 2026
Sw063-066 51711311 31111764N007352724E 365737334513182 2026
Sw063-066 51711312 31111892N007352838E 365768034513573 2024
Sw063-066 51711313 31112014N007352957E 365800134513945 2005
Sw063-066 51711314 31112141N007353079E 365833034514333 1986
Sw063-066 51711315 31112266N007353198E 365864734514713 1969
Sw063-066 51711316 31112394N007353324E 365898834515101 1953
Sw063-066 51711317 31112517N007353439E 365929734515477 1954
Sw063-066 51711318 31112645N007353562E 365962734515867 1960
Sw063-066 51711319 31112770N007353684E 365995634516247 1985
Sw063-066 51711320 31112898N007353799E 366026334516639 2011
Sw063-066 51711321 31113023N007353915E 366057534517020 2026
Sw063-066 51711322 31113153N007354039E 366091034517415 2036
Sw063-066 51711323 31113282N007354159E 366123334517807 2045
Sw063-066 51711324 31113401N007354277E 366154934518171 2042
Sw063-066 51711325 31113532N007354402E 366188634518569 2041
Sw063-066 51711326 31113655N007354517E 366219534518946 2046
Sw063-066 51711327 31113780N007354637E 366251534519326 2055
Sw063-066 51711328 31113906N007354759E 366284434519709 2058
Sw063-066 51711329 31114027N007354874E 366315434520077 2072
Sw063-066 51711330 31114157N007354994E 366347634520474 2085
Sw063-066 51811311 31111252N007353452E 365928234511583 2027
Sw063-066 51811312 31111382N007353575E 365961134511978 2065
Sw063-066 51811313 31111503N007353695E 365993434512346 2082
Sw063-066 51811314 31111630N007353812E 366024934512735 2074
Sw063-066 51811315 31111762N007353938E 366058834513134 2063
Sw063-066 51811316 31111881N007354052E 366089434513497 2050
Sw063-066 51811317 31112005N007354172E 366121734513878 2044
Sw063-066 51811318 31112132N007354290E 366153334514262 2028
Sw063-066 51811319 31112258N007354409E 366185534514646 2051
Sw063-066 51811320 31112385N007354533E 366218834515036 2041
Sw063-066 51811321 31112502N007354649E 366249834515391 2046
Sw063-066 51811322 31112632N007354774E 366283434515787 2058
Sw063-066 51811323 31112762N007354893E 366315334516184 2059
Sw063-066 51811324 31112885N007355009E 366346734516558 2068
Sw063-066 51811325 31113005N007355130E 366379134516924 2062
Sw063-066 51811326 31113131N007355249E 366411134517306 2045
Sw063-066 51811327 31113253N007355362E 366441434517680 2040
Sw063-066 51811328 31113382N007355481E 366473534518071 2034
Sw063-066 51811329 31113511N007355603E 366506334518465 2029
Sw063-066 51811330 31113643N007355721E 366538134518867 2034
Sw063-066 51911311 31110736N007354181E 366119134509969 2091
Sw063-066 51911312 31110867N007354295E 366149834510368 2085
Sw063-066 51911313 31110999N007354424E 366184434510770 2066
Sw063-066 51911314 31111117N007354541E 366215834511129 2070
Sw063-066 51911315 31111243N007354664E 366248834511514 2071
Sw063-066 51911316 31111373N007354796E 366284334511910 2068
Sw063-066 51911317 31111496N007354900E 366312334512284 2047
Sw063-066 51911318 31111620N007355018E 366344134512663 2043
Sw063-066 51911319 31111753N007355151E 366379834513069 2035
Sw063-066 51911320 31111878N007355279E 366414134513447 2028
Sw063-066 51911321 31111998N007355392E 366444534513815 2005
Sw063-066 51911322 31112127N007355511E 366476734514208 1973
Sw063-066 51911323 31112247N007355627E 366507634514574 1948
Sw063-066 51911324 31112370N007355745E 366539434514949 1954
Sw063-066 51911325 31112496N007355868E 366572534515331 1953
Sw063-066 51911326 31112622N007355988E 366604834515716 1953
Sw063-066 51911327 31112748N007360102E 366635534516099 1972
Sw063-066 51911328 31112875N007360218E 366666734516486 1982
Sw063-066 51911329 31113007N007360343E 366700334516888 1985
Sw063-066 51911330 31113126N007360458E 366731034517252 1981
Sw063-066 52011311 31110226N007354910E 366310034508374 1961
Sw063-066 52011312 31110354N007355036E 366343834508765 1950
Sw063-066 52011313 31110482N007355153E 366375434509154 1975
Sw063-066 52011314 31110600N007355267E 366406034509513 1963
Sw063-066 52011315 31110724N007355385E 366437834509891 1971
Sw063-066 52011316 31110851N007355509E 366471134510279 1985
Sw063-066 52011317 31110974N007355631E 366503834510652 1999
Sw063-066 52011318 31111102N007355756E 366537334511041 1968
Sw063-066 52011319 31111229N007355873E 366568934511431 1960
Sw063-066 52011320 31111358N007355989E 366600134511823 1995
Sw063-066 52011321 31111479N007360107E 366631734512191 2001
Sw063-066 52011322 31111599N007360222E 366662634512557 2003
Sw063-066 52011323 31111725N007360339E 366694134512942 1995
Sw063-066 52011324 31111859N007360463E 366727534513349 1988
Sw063-066 52011325 31111983N007360584E 366760134513726 1993
Sw063-066 52011326 31112105N007360704E 366792234514100 1994
Sw063-066 52011327 31112230N007360826E 366825034514480 1990
Sw063-066 52011328 31112357N007360940E 366855834514868 1982
Sw063-066 52011329 31112485N007361063E 366888734515258 1968
Sw063-066 52011330 31112612N007361182E 366920834515644 1956
Sw063-066 52111311 31105710N007355635E 366500034506759 2028
Sw063-066 52111312 31105833N007355767E 366535334507134 2023
Sw063-066 52111313 31105961N007355878E 366565334507526 1955
Sw063-066 52111314 31110086N007355991E 366595634507905 1934
Sw063-066 52111315 31110211N007360117E 366629534508288 1926
Sw063-066 52111316 31110330N007360243E 366663234508650 1949
Sw063-066 52111317 31110452N007360362E 366695234509021 1955
Sw063-066 52111318 31110576N007360478E 366726334509399 1946
Sw063-066 52111319 31110705N007360594E 366757634509793 1964
Sw063-066 52111320 31110838N007360716E 366790534510197 1964
Sw063-066 52111321 31110957N007360831E 366821434510561 1954
Sw063-066 52111322 31111087N007360954E 366854434510956 1969
Sw063-066 52111323 31111218N007361073E 366886534511356 1945
Sw063-066 52111324 31111342N007361190E 366918034511734 1943
Sw063-066 52111325 31111467N007361309E 366950034512114 1939
Sw063-066 52111326 31111596N007361431E 366982834512506 1947
Sw063-066 52111327 31111721N007361555E 367015934512888 1964
Sw063-066 52111328 31111847N007361668E 367046434513271 1957
Sw063-066 52111329 31111970N007361786E 367078134513646 1952
Sw063-066 52111330 31112093N007361911E 367111534514022 1953
Sw063-066 52211311 31105398N007360080E 366616634505784 2053
Sw063-066 52211312 31105524N007360218E 366653534506169 2012
Sw063-066 52211313 31105457N007360612E 366757534505951 2185
Sw063-066 52211314 31105565N007360734E 366790434506278 2156
Sw063-066 52211315 31105702N007360853E 366822434506695 2088
Sw063-066 52211316 31105831N007360976E 366855434507090 2019
Sw063-066 52211317 31105957N007361095E 366887534507472 1964
Sw063-066 52211318 31110082N007361221E 366921334507852 1942
Sw063-066 52211319 31110205N007361343E 366954034508227 1965
Sw063-066 52211320 31110324N007361459E 366985234508590 1983
Sw063-066 52211321 31110440N007361570E 367015034508945 1998
Sw063-066 52211322 31110573N007361688E 367046734509350 2033
Sw063-066 52211323 31110707N007361811E 367079934509759 2018
Sw063-066 52211324 31110834N007361934E 367113034510146 1980
Sw063-066 52211325 31110962N007362064E 367147734510535 1979
Sw063-066 52211326 31111076N007362181E 367179234510883 1987
Sw063-066 52211327 31111204N007362299E 367211034511271 1977
Sw063-066 52211328 31111338N007362415E 367242334511681 1962
Sw063-066 52211329 31111461N007362530E 367273034512057 1959
Sw063-066 52211330 31111585N007362655E 367306834512433 1962
Sw063-066 52311311 31104690N007361106E 366885334503570 2294
Sw063-066 52311312 31104502N007361676E 367035634502972 2128
Sw063-066 52311313 31104522N007361948E 367107634503026 2078
Sw063-066 52311314 31104649N007362056E 367136734503414 2083
Sw063-066 52311315 31104890N007362033E 367131634504156 2094
Sw063-066 52311316 31105012N007362151E 367163234504527 2038
Sw063-066 52311317 31105432N007361815E 367075834505831 2112
Sw063-066 52311318 31105559N007361935E 367108234506219 2031
Sw063-066 52311319 31105688N007362055E 367140434506613 2011
Sw063-066 52311320 31105814N007362176E 367173134506996 2034
Sw063-066 52311321 31105938N007362302E 367206934507372 2081
Sw063-066 52311322 31110055N007362437E 367243034507730 2098
Sw063-066 52311323 31110183N007362550E 367273334508121 2056
Sw063-066 52311324 31110317N007362673E 367306534508529 2039
Sw063-066 52311325 31110441N007362786E 367336834508905 2035
Sw063-066 52311326 31110553N007362890E 367364934509248 2058
Sw063-066 52311327 31110684N007363014E 367398334509647 2000
Sw063-066 52311328 31110821N007363144E 367433134510063 1932
Sw063-066 52311329 31110946N007363266E 367466034510445 1916
Sw063-066 52311330 31111078N007363389E 367499134510849 1918
Sw063-066 52411311 31104150N007361829E 367074834501884 2120
Sw063-066 52411312 31104291N007361957E 367109134502315 2102
Sw063-066 52411313 31104416N007362074E 367140634502696 2054
Sw063-066 52411314 31104543N007362192E 367172334503083 2020
Sw063-066 52411315 31104666N007362315E 367205334503458 2034
Sw063-066 52411316 31104790N007362432E 367236834503834 2092
Sw063-066 52411317 31104917N007362553E 367269234504221 2085
Sw063-066 52411318 31105048N007362673E 367301634504621 2088
Sw063-066 52411319 31105173N007362792E 367333734505002 2103
Sw063-066 52411320 31105298N007362916E 367366834505383 2069
Sw063-066 52411321 31105421N007363033E 367398434505758 2037
Sw063-066 52411322 31105549N007363154E 367430934506148 2027
Sw063-066 52411323 31105669N007363267E 367461334506514 2009
Sw063-066 52411324 31105795N007363385E 367492934506897 2019
Sw063-066 52411325 31105928N007363511E 367526834507301 2006
Sw063-066 52411326 31110050N007363629E 367558634507674 2009
Sw063-066 52411327 31110185N007363758E 367593234508087 2025
Sw063-066 52411328 31110307N007363873E 367624034508457 2016
Sw063-066 52411329 31110422N007363983E 367653834508808 2016
Sw063-066 52411330 31110554N007364108E 367687234509209 1995
Sw063-066 52511311 31103652N007362568E 367268434500327 2018
Sw063-066 52511312 31103775N007362680E 367298634500701 2010
Sw063-066 52511313 31103898N007362795E 367329334501077 2019
Sw063-066 52511314 31104032N007362917E 367362334501484 2069
Sw063-066 52511315 31104150N007363032E 367393134501843 2102
Sw063-066 52511316 31104279N007363168E 367429734502238 2089
Sw063-066 52511317 31104404N007363280E 367459834502617 2054
Sw063-066 52511318 31104532N007363409E 367494434503008 2025
Sw063-066 52511319 31104654N007363525E 367525534503379 2007
Sw063-066 52511320 31104780N007363644E 367557534503763 1996
Sw063-066 52511321 31104907N007363762E 367589234504150 1989
Sw063-066 52511322 31105032N007363882E 367621534504532 1956
Sw063-066 52511323 31105154N007364003E 367654234504903 1940
Sw063-066 52511324 31105283N007364113E 367683634505296 1966
Sw063-066 52511325 31105410N007364237E 367716934505683 1945
Sw063-066 52511326 31105540N007364355E 367748834506078 1955
Sw063-066 52511327 31105664N007364474E 367780734506458 1959
Sw063-066 52511328 31105789N007364592E 367812534506838 1974
Sw063-066 52511329 31105913N007364712E 367844834507218 1984
Sw063-066 52511330 31110040N007364825E 367875234507603 1993
Sw063-066 52611311 31103145N007363306E 367461934498741 1975
Sw063-066 52611312 31103270N007363426E 367493934499122 1988
Sw063-066 52611313 31103395N007363543E 367525634499501 1982
Sw063-066 52611314 31103521N007363661E 367557134499885 1963
Sw063-066 52611315 31103640N007363775E 367587834500249 1951
Sw063-066 52611321 31104397N007364489E 367779734502556 1952
Sw063-066 52611322 31104512N007364598E 367809034502906 1982
Sw063-066 52611323 31104642N007364729E 367844434503304 1965
Sw063-066 52611324 31104761N007364848E 367876234503664 1946
Sw063-066 52611325 31104900N007364977E 367910834504088 1982
Sw063-066 52611326 31105027N007365098E 367943334504477 1980
Sw063-066 52611327 31105152N007365218E 367975734504857 1966
Sw063-066 52611328 31105276N007365336E 368007334505236 1936
Sw063-066 52611329 31105398N007365445E 368036734505608 1979
Sw063-066 52611330 31105534N007365575E 368071734506020 2011
Sw063-066 52711311 31102621N007364042E 367654734497103 1968
Sw063-066 52711312 31102760N007364153E 367684534497528 1962
Sw063-066 52711313 31102890N007364269E 367715734497924 1989
Sw063-066 52711314 31103006N007364388E 367747734498278 2006
Sw063-066 52711315 31103124N007364504E 367778834498635 2036
Sw063-066 52711316 31103253N007364625E 367811334499029 2044
Sw063-066 52711321 31103881N007365235E 367975234500944 1998
Sw063-066 52711322 31104014N007365357E 368008034501348 2006
Sw063-066 52711323 31104143N007365485E 368042634501741 2031
Sw063-066 52711324 31104261N007365590E 368070734502100 2057
Sw063-066 52711325 31104389N007365713E 368103834502492 2035
Sw063-066 52711326 31104514N007365833E 368136234502872 2002
Sw063-066 52711327 31104636N007365948E 368167034503244 2004
Sw063-066 52711328 31104760N007370076E 368201334503621 2036
Sw063-066 52711329 31104888N007370194E 368233134504013 2048
Sw063-066 52711330 31105016N007370313E 368265134504403 2044
Sw063-066 52811311 31102106N007364768E 367844734495494 2058
Sw063-066 52811312 31102229N007364884E 367876034495868 2027
Sw063-066 52811313 31102359N007364997E 367906534496264 2037
Sw063-066 52811314 31102490N007365111E 367937034496664 2081
Sw063-066 52811315 31102614N007365231E 367969334497043 2077
Sw063-066 52811316 31102739N007365355E 368002534497423 2108
Sw063-066 52811317 31102860N007365469E 368033234497790 2143
Sw063-066 52811318 31102979N007365579E 368062934498155 2097
Sw063-066 52811319 31103116N007365713E 368098934498573 2105
Sw063-066 52811320 31103241N007365833E 368131234498951 2131
Sw063-066 52811321 31103363N007365952E 368163134499324 2132
Sw063-066 52811322 31103478N007370072E 368195434499674 2097
Sw063-066 52811323 31103614N007370202E 368230234500087 2049
Sw063-066 52911311 31101594N007365491E 368034234493894 2092
Sw063-066 52911312 31101724N007365602E 368064134494289 2108
Sw063-066 52911313 31101848N007365720E 368096034494668 2144
Sw063-066 52911314 31101973N007365843E 368128934495047 2139
Sw063-066 52911315 31102100N007365971E 368163234495435 2113
Sw063-066 52911316 31102220N007370084E 368193534495800 2134
Sw063-066 52911317 31102342N007370203E 368225734496172 2160
Sw063-066 52911318 31102489N007370340E 368262434496620 2198
Sw063-066 52911319 31102600N007370445E 368290634496957 2217
Sw063-066 52911320 31102719N007370575E 368325534497321 2249
Sw063-066 52911321 31103263N007370093E 368199934499013 2131
Sw063-066 52911322 31103387N007370229E 368236634499388 2087
Sw063-066 52911323 31103516N007370340E 368266334499783 2073
Sw063-066 52911324 31103631N007370447E 368295134500132 2019
Sw063-066 52911325 31103774N007370589E 368333234500568 2032
Sw063-066 52911326 31103900N007370697E 368362434500954 2060
AREA/PROJECT:17REN3D DATE:01/12/2017
CLIENT :SONATRACH SURVEY METHOD:DGPS
CONTRACTOR: ENAGEO INSTRUMENTATION:TRIMBLE-R7
COUNTRY: ALGERIA GRID SYSTEM: Transverse Mercator
COUNTY: ELBORMA SOURCE INTERVAL: 50m
CREW NUMBER:EGS-120 UNITS: Meters
FILE CONTENTS:SRC
GRID DESIGNATION: ZONE: 32
LINE NUMBER:Sw063-066 TYPE SURVEY:3D
STATE: OUARGLA DATUM: WGS84
SURVEYOR: STAFF EGS-120 RECEIVER INTERVAL:50m

ronan

il y a 7 ans

Quelles sont les données à supprimer ?

Cela permettrait de savoir de quelle manière trier le fichier.

Pour effectuer des traitements sur un fichier, il existe également la commande sed

Cette commande permet de faire beaucoup de modifications sur les fichiers.

Arthur (not verified)

il y a 2 ans 7 mois

Bonjour,
Merci pour vos astuces.
Ici il s'agit de ranger des données selon un ordre.
Le tri est fonction d'un critère binaire : par exemple tous les enregistrements qui remplissent une condition vont d'un coté quand tous ceux qui ne la remplissent pas vont de l'autre.

Pour un tri plus poussé, il peut-être intéressant, voir inévitable, de passer par un autre langage tel que Python.

Il peut tout lire et tout trier très facilement

paste

paste

By ronan, 23 mai, 2012

La commande paste concatène les lignes de même niveau des fichiers passés en argument. Avec l'option -s, chaque fichier est traité de manière indépendante et verra toutes ses lignes concaténées en une seule. Les éléments concaténés sont séparés par une tabulation.

Syntaxe

paste [options] [fichiers ...]
Principales options :
-s : Concaténer toutes les lignes en une seule
-d listesep : Les caractères cités dans listesep seront utilisés pour séparer les champs en sortie

Exemple

Exemple avec 2 fichiers contenant les dépenses d'un ménage pour le mois de janvier 2012 et février 2012. Les catégories sont mentionnées dans le même ordre.

$ cat janvier2012
Alimentation    50.00
Eau             25.00
Electricite     123.50
Loyer           456.90
Assurances      234.00
 
$ cat fevrier2012
Alimentation    67.00
Eau             34.00
Electricite     156.00
Loyer           456.90
Assurances      225.00
$

Mettre sur la même ligne les montants de chaque catégorie.

$ paste janvier2012 fevrier2012
Alimentation    50.00   Alimentation    67.00
Eau             25.00   Eau             34.00
Electricite     123.50  Electricite     156.00
Loyer           456.90  Loyer           456.90
Assurances      234.00  Assurances      225.00
$

Retirer la 3ème colonne et ajouter des en-têtes de colonnes et le total pour chaque mois.

$ paste janvier2012 fevrier2012 | awk 'BEGIN{printf("%-15s\t%7s\t%7s\n","POSTE","JANVIER","FEVRIER")}{printf("%-15s\t%7.2f\t%7.2f\n",$1,$2,$4);jan+=$2;fev+=$4}END{printf("%-15s\t%7.2f\t%7.2f\n","TOTAL",jan,fev)}'
POSTE           JANVIER FEVRIER
Alimentation      50.00   67.00
Eau               25.00   34.00
Electricite      123.50  156.00
Loyer            456.90  456.90
Assurances       234.00  225.00
TOTAL            889.40  938.90
$

Concaténer toutes les lignes en une seule.

$ paste -s janvier2012 fevrier2012
Alimentation    50.00   Eau             25.00   Electricite     123.50  Loyer           456.90  Assurances      234.00
Alimentation    67.00   Eau             34.00   Electricite     156.00  Loyer           456.90  Assurances      225.00
$

Etiquettes

split

split

By ronan, 23 mai, 2012

La commande split permet d'éclater un fichier en fragments. Chaque fragment étant stocké dans des fichiers nommés PREFIXEaa, PREFIXEab, ... PREFIXE ayant pour valeur par défaut "x". Si aucun nom de fichier n'est spécifié, l'entrée standard est utilisée.

Syntaxe

split [options] [fichiers ... [prefixe]]
Principales options :
-b nb : Le fichier est éclaté tous les "nb" octets
-l nb : Le fichier est éclaté toutes les "nb" lignes

Exemples

Exemple avec un fichier contenant 9 lignes

$ cat fic10
ligne1
ligne2
ligne3
ligne4
ligne5
ligne6
ligne7
ligne8
ligne9
$

Eclater le fichier en différents fichiers de 3 lignes chacuns. Par défaut, chaque fichier généré sera préfixé par la lettre "x".

$ split -l3 fic10
$ ls -l x*
-rw-r--r-- 1 root root 21 May 23 08:56 xaa
-rw-r--r-- 1 root root 21 May 23 08:56 xab
-rw-r--r-- 1 root root 21 May 23 08:56 xac
$ cat xaa
ligne1
ligne2
ligne3
$ cat xab
ligne4
ligne5
ligne6
$ cat xac
ligne7
ligne8
ligne9
$

Modifier le préfixe des fichiers générés.

$ split -l3 fic10 fichier
$ ls -l fichier*
-rw-r--r-- 1 root root 21 May 23 08:58 fichieraa
-rw-r--r-- 1 root root 21 May 23 08:58 fichierab
-rw-r--r-- 1 root root 21 May 23 08:58 fichierac
$

Etiquettes

Transformation de caractères : tr

Transformation de caractères : tr

By ronan, 24 mai, 2012

La commande tr permet d'appliquer un traitement sur certains caractères d'un flux de données : suppression, substitutions ... Cette commande exploite uniquement les données arrivant sur l'entrée standard.

Syntaxe

tr [options] ensemble1 [ensemble2]
Principale option :
[-d caractères] : La liste des caractères qui doivent être supprimés du flux de données.

Substitution de caractères

Deux ensembles de caractères doivent être spécifiés. Chaque ensemble comporte le même nombre de caractères. Tout caractère de ensemble1 trouvé dans le flux de données est substitué par le caractère de même position situé dans ensemble2.

Exemples

La chaine abcd est traitée : chaque caractère b est remplacé par 2 et chaque caractère d est remplacé par 4.

$ echo abcd | tr bd 24
a2c4
$

Il est possible d'utiliser la notion d'intervalles de caractères en utilisant des crochets. Ici chaque minuscule est remplacée par une majuscule correspondante :

$ echo abcd | tr "[a-z]" "[A-Z]"
ABCD
$

Pour traiter un fichier, il faut utiliser la redirection :

$ cat fic1
ceci est un test
$ tr "[a-z]" "[A-Z]" < fic1
CECI EST UN TEST
$

Suppression de caractères

L'option -d permet de supprimer certains caractères du flux de données.

Exemples

Transformation d'un fichier au format DOS (fin de lignes "\r\n") en un format UNIX ("\n"). Retrait du caractère "\r" :

$ od -c fic100
0000000   c   e   c   i       e   s   t       u   n       t   e   s   t
0000020  \r  \n
0000022
$ tr -d '\r' < fic100 > fic101
$ od -c fic101
0000000   c   e   c   i       e   s   t       u   n       t   e   s   t
0000020  \n
0000021
$

En ajoutant l'option -c à l'option -d, la commande supprime tous les caractères non présents dans la liste passée en argument :

$ echo "Linux Pratique HS N°26 – Février/Mars 2013 – En kiosque" | tr -dc a-zA-Z; echo
LinuxPratiqueHSNFvrierMarsEnkiosque

La dernière commande echo permet uniquement d'afficher un retour à la ligne.

Etiquettes

Hana (not verified)

il y a 6 ans 4 mois

Bonjour, comment faire alors dans l'autre sens. Genre tu as un fichier texte plein d'espace et tu veux faire apparaître les caractères invisibles via la commande tr ?
j'ai un fichier texte avec des caractères caches et je n'arrive pas a les afficher. Merci

La commande tr n'est pas faite pour ça.
La commande tr permet de transposer des caractères (remplacer, substituer)
Pour afficher des caractères (caractères spéciaux en l'occurence), la commande od avec l'option -c permet de le faire.
Les retours à la ligne seront affichés avec '\n', les espaces avec ' ', les tabulations avec '\t'

Dédoublonnage : uniq

Dédoublonnage : uniq

By ronan, 24 mai, 2012

La commande uniq permet de dédoublonner les lignes d'un fichier. Seules les lignes identiques consécutives sont traitées. Elle s'utilise le plus souvent à la suite de la commande sort. Le résultat est stocké dans un fichier de sortie, si celui-ci est spécifié, sur la sortie standard dans le cas contraire.

Syntaxe

uniq [options] [fichier_entree [fichier_sortie]]
Principales options :
-d : Affichage des doublons
-c : Comptage des doublons

Exemples

Le fichier fic20 contient des lignes en double

$ cat fic20
ceci est un test
ceci est un test
ceci est un test
ceci est un test
ceci est un autre test
ceci est un test
ceci est un autre test
ceci    est     un      test
ceci est un     test
et un   autre test
ceci est un fichier
$

Le fichier doit être trié pour que les lignes identiques soient consécutives :

$ sort fic20
ceci est un autre test
ceci est un autre test
ceci est un fichier
ceci est un test
ceci est un test
ceci est un test
ceci est un test
ceci est un test
ceci est un     test
ceci    est     un      test
et un   autre test
$

Et enfin, suppression des doublons :

$ sort fic20 | uniq
ceci est un autre test
ceci est un fichier
ceci est un test
ceci est un     test
ceci    est     un      test
et un   autre test
$

Résultat identique avec la commande sort et l'option -u :

$ sort -u fic20
ceci est un autre test
ceci est un fichier
ceci est un test
ceci est un     test
ceci    est     un      test
et un   autre test
$

Afficher devant chaque ligne son nombre d'occurences dans le fichier :

$ sort fic20 | uniq -c
      2 ceci est un autre test
      1 ceci est un fichier
      5 ceci est un test
      1 ceci est un     test
      1 ceci    est     un      test
      1 et un   autre test
$

Afficher uniquement les lignes ayant des doublons :

$ sort fic20 | uniq -d
ceci est un autre test
ceci est un test
$

Combinées les options -c et -d :

$ sort fic20 | uniq -cd
      2 ceci est un autre test
      5 ceci est un test
$

Afficher les lignes uniques :

$ sort fic20 | uniq -u
ceci est un fichier
ceci est un     test
ceci    est     un      test
et un   autre test
$ sort fic20 | uniq -cu
      1 ceci est un fichier
      1 ceci est un     test
      1 ceci    est     un      test
      1 et un   autre test
$

Etiquettes

Compressions, archivages et conversions

Compressions : gzip, bzip2

Compressions : gzip, bzip2

By ronan, 25 mai, 2012

Les commandes gzip/gunzip, bzip2/bunzip2 compressent/décompressent chaque fichier passé en argument sur la ligne de commande. La commande bzip2 possède un meilleur taux de compression. Ces commandes se trouvent en standard sur les systèmes Linux et peuvent s'installer sur les systèmes UNIX si elles ne sont pas déjà présentes. La commande gzip produit l'extension .gz et la commande bzip2 produit l'extension .bz2.

Syntaxe de gzip

Compression :
gzip [options] [fichiers ...]
Décompression :
gunzip [options] [fichiers ...]
zcat [options] [fichiers ...]
Principales options :
-c : Envoie le résultat sur la sortie standard. La commande gunzip -c est équivalente à la commande zcat.
-t : Tester la validité de l'archive.

Si le nom de fichier est omis, les données à traiter sont lues sur l'entrée standard.

Exemple

Compression du fichier mon_fichier4. L'original est remplacé par le fichier compressé.

$ ls -lh mon_fichier4
-rw-r--r-- 1 root root 6,6M 25 mai   16:36 mon_fichier4
$ gzip mon_fichier4
$ ls -lh mon_fichier4.gz
-rw-r--r-- 1 root root 2,1M 25 mai   16:36 mon_fichier4.gz
$

Décompression. Le fichier d'origine est restitué et remplace le fichier compressé.

$ gunzip mon_fichier4.gz
$ ls -lh mon_fichier4*
-rw-r--r-- 1 root root 6,6M 25 mai   16:36 mon_fichier4
$

Compression du fichier avec envoi du flux sur la sortie standard. Cette méthode permet de conserver le fichier d'origine.

$ gzip -c mon_fichier4 > mon_fichier4.gz
$ ls -lh mon_fichier4*
-rw-r--r-- 1 root root 6,6M 25 mai   16:36 mon_fichier4
-rw-r--r-- 1 root root 2,1M 25 mai   16:42 mon_fichier4.gz
$

Décompressé en conservant le fichier compressé.

$ gunzip -c mon_fichier4.gz > mon_fichier5
$ ls -lh mon_fichier*
-rw-r--r-- 1 root root 6,6M 25 mai   16:36 mon_fichier4
-rw-r--r-- 1 root root 2,1M 25 mai   16:42 mon_fichier4.gz
-rw-r--r-- 1 root root 6,6M 25 mai   16:44 mon_fichier5
$

Idem mais avec la commande zcat.

$ zcat mon_fichier4.gz > mon_fichier6
$ ls -lh mon_fichier*
-rw-r--r-- 1 root root 6,6M 25 mai   16:36 mon_fichier4
-rw-r--r-- 1 root root 2,1M 25 mai   16:42 mon_fichier4.gz
-rw-r--r-- 1 root root 6,6M 25 mai   16:44 mon_fichier5
-rw-r--r-- 1 root root 6,6M 25 mai   16:46 mon_fichier6
$

Les commandes bzip2, bunzip2 et bzcat fonctionnent de manière similaire avec une légère différence au niveau des options.

Syntaxe de bzip2

Compression :
bzip2 [options] [fichiers ...]
Décompression :
bunzip2 [fichiers ...]
bzip2 -d
[options] [fichiers ...]
bzcat [options] [fichiers ...]
Principales options :
-c : Envoie le résultat sur la sortie standard. La commande bzip2 -dc est équivalente à la commande bzcat.
-d : Décompression
-t : Tester la validité de l'archive.

Exemple

Compression du fichier mon_fichier4. La compression avec bzip2 est meilleure qu'avec gzip.

$ ls -lh mon_fichier*
-rw-r--r-- 1 root root 6,6M 25 mai   16:36 mon_fichier4
-rw-r--r-- 1 root root 2,1M 25 mai   16:42 mon_fichier4.gz
-rw-r--r-- 1 root root 6,6M 25 mai   16:44 mon_fichier5
-rw-r--r-- 1 root root 6,6M 25 mai   16:46 mon_fichier6
$ bzip2 -c mon_fichier4 > mon_fichier4.bz2
$ ls -lh mon_fichier*
-rw-r--r-- 1 root root 6,6M 25 mai   16:36 mon_fichier4
-rw-r--r-- 1 root root 1,2M 25 mai   16:54 mon_fichier4.bz2
-rw-r--r-- 1 root root 2,1M 25 mai   16:42 mon_fichier4.gz
-rw-r--r-- 1 root root 6,6M 25 mai   16:44 mon_fichier5
-rw-r--r-- 1 root root 6,6M 25 mai   16:46 mon_fichier6
$

Analyse des différentes compressions

$ wc -c mon_fichier4
6903921 mon_fichier4
$ wc -m mon_fichier4
6903921 mon_fichier4
$ ls -l mon_fichier*
-rw-r--r-- 1 root root 6903921 25 mai   16:36 mon_fichier4
-rw-r--r-- 1 root root 1207370 25 mai   16:54 mon_fichier4.bz2
-rw-r--r-- 1 root root 2129319 25 mai   16:42 mon_fichier4.gz
-rw-r--r-- 1 root root 6903921 25 mai   16:44 mon_fichier5
-rw-r--r-- 1 root root 6903921 25 mai   16:46 mon_fichier6
$

Test réalisé avec un fichier contenant uniquement des caractères.
Le fichier mon_fichier4 contient 6 903 921 caractères et par conséquent une taille de 6 903 921 octets.

Compression avec gzip : Le fichier a été réduit à une taille de 2 129 319 octets. Ce qui représente une diminution de 69,16 %

Compression avec bzip2 : Le fichier a été réduit à une taille de 1 207 370 octets. Ce qui représente une diminution de 82,51%

Etiquettes

Archives tar

Archives tar

By ronan, 25 mai, 2012

La commande tar permet de créer une archive à partir d'un ou plusieurs fichiers. Si le fichier est un répertoire, il sera archivé avec sa sous-arborescence.

Syntaxe

Création d'une archive :
tar -c [-zv] -f archive fichiers_a_archiver ...
Vérification d'une archive :
tar -t [-zv] -f archive [fichiers_a_verifier ...]
Extraction d'une archive :
tar -x [-zv] -f archive [fichiers_a_extraire ...]
Principales options :
-c : Création d'une archive
-t : Vérification d'une archive
-x : Extraction d'une archive
-f archive.tar : Nom de l'archive à créer, vérifier ou extraire
-f - : Dans le cas d'une création, le contenu de l'archive est envoyé sur la sortie standard. En extraction et vérification, le contenu de l'archive est attendu sur l'entrée standard
-v : Mode verbeux
-z : Sous Linux uniquement : permet de gérer en plus la compression
avec gzip
-j : Compression avec bzip2

Exemples

Archivage et compression du dossier dossier_a_sauvegarder. La commande tar envoi le contenu de l'archive à la commande gzip via un pipe et qui compresse l'archive dans un fichier dossier_a_sauvegarder.tar.gz

$ ls -R dossier_a_sauvegarder
dossier_a_sauvegarder:
aZerty  Bonjour  Coucou  help  history  last  monscript  pays2011.txt.1  piwik1  piwik2  result  ronan  ronan2  ronan3  search  test
$ tar -cvf - dossier_a_sauvegarder | gzip -c > dossier_a_sauvegarder.tar.gz
dossier_a_sauvegarder/
dossier_a_sauvegarder/ronan2
dossier_a_sauvegarder/last
dossier_a_sauvegarder/search
dossier_a_sauvegarder/piwik2
dossier_a_sauvegarder/ronan3
dossier_a_sauvegarder/result
dossier_a_sauvegarder/help
dossier_a_sauvegarder/history
dossier_a_sauvegarder/Coucou
dossier_a_sauvegarder/pays2011.txt.1
dossier_a_sauvegarder/monscript
dossier_a_sauvegarder/ronan
dossier_a_sauvegarder/test
dossier_a_sauvegarder/Bonjour
dossier_a_sauvegarder/piwik1
dossier_a_sauvegarder/aZerty
$ ls -l dossier_a_sauvegarder.tar.gz
-rw-r--r-- 1 root root 369562 25 mai   17:30 dossier_a_sauvegarder.tar.gz
$

Décompression et extraction. La commande gunzip décompresse le fichier et envoie le résultat à la commande tar qui extrait tout le contenu de l'archive.

$ gunzip -c dossier_a_sauvegarder.tar.gz | tar -xvf -
dossier_a_sauvegarder/
dossier_a_sauvegarder/ronan2
dossier_a_sauvegarder/last
dossier_a_sauvegarder/search
dossier_a_sauvegarder/piwik2
dossier_a_sauvegarder/ronan3
dossier_a_sauvegarder/result
dossier_a_sauvegarder/help
dossier_a_sauvegarder/history
dossier_a_sauvegarder/Coucou
dossier_a_sauvegarder/pays2011.txt.1
dossier_a_sauvegarder/monscript
dossier_a_sauvegarder/ronan
dossier_a_sauvegarder/test
dossier_a_sauvegarder/Bonjour
dossier_a_sauvegarder/piwik1
dossier_a_sauvegarder/aZerty
$

Lister le contenu d'une archive

$ gunzip -c dossier_a_sauvegarder.tar.gz | tar -tf -
dossier_a_sauvegarder/
dossier_a_sauvegarder/ronan2
dossier_a_sauvegarder/last
dossier_a_sauvegarder/search
dossier_a_sauvegarder/piwik2
dossier_a_sauvegarder/ronan3
dossier_a_sauvegarder/result
dossier_a_sauvegarder/help
dossier_a_sauvegarder/history
dossier_a_sauvegarder/Coucou
dossier_a_sauvegarder/pays2011.txt.1
dossier_a_sauvegarder/monscript
dossier_a_sauvegarder/ronan
dossier_a_sauvegarder/test
dossier_a_sauvegarder/Bonjour
dossier_a_sauvegarder/piwik1
dossier_a_sauvegarder/aZerty
$

Archivage et compression en utilisant l'option -z

$ tar -cvzf monArchive.tar.gz dossier_a_sauvegarder
dossier_a_sauvegarder/
dossier_a_sauvegarder/ronan2
dossier_a_sauvegarder/last
dossier_a_sauvegarder/search
dossier_a_sauvegarder/piwik2
dossier_a_sauvegarder/ronan3
dossier_a_sauvegarder/result
dossier_a_sauvegarder/help
dossier_a_sauvegarder/history
dossier_a_sauvegarder/Coucou
dossier_a_sauvegarder/pays2011.txt.1
dossier_a_sauvegarder/monscript
dossier_a_sauvegarder/ronan
dossier_a_sauvegarder/test
dossier_a_sauvegarder/Bonjour
dossier_a_sauvegarder/piwik1
dossier_a_sauvegarder/aZerty
$

Idem pour lister le contenu de l'archive. En fait, l'option -z n'est pas obligatoire. Que l'archive soit compressée ou pas les options -tf suffisent.

$ tar -tf monArchive.tar.gz
dossier_a_sauvegarder/
dossier_a_sauvegarder/ronan2
dossier_a_sauvegarder/last
dossier_a_sauvegarder/search
dossier_a_sauvegarder/piwik2
dossier_a_sauvegarder/ronan3
dossier_a_sauvegarder/result
dossier_a_sauvegarder/help
dossier_a_sauvegarder/history
dossier_a_sauvegarder/Coucou
dossier_a_sauvegarder/pays2011.txt.1
dossier_a_sauvegarder/monscript
dossier_a_sauvegarder/ronan
dossier_a_sauvegarder/test
dossier_a_sauvegarder/Bonjour
dossier_a_sauvegarder/piwik1
dossier_a_sauvegarder/aZerty
$

Ajouter un fichier à une archive existante en 3 étapes.

1 - Décompression (un fichier ne peut être ajouté à une archive compressée

$ gunzip monArchive.tar.gz

2 - Ajout du fichier xam à l'archive

$ tar -rf monArchive.tar xam

3 - Compression de l'archive

$ gzip monArchive.tar

Vérifier les différences entre le contenu de l'archive tar et les fichiers sources. Mettre à jour si nécessaire.

1 - Décompression de l'archive

$ gunzip monArchive.tar.gz

2 - Comparaison de l'archive avec les fichiers sources et affichage des différences existantes

$ tar -df monArchive.tar
dossier_a_sauvegarder/aZerty: La date de modification est différente.
dossier_a_sauvegarder/aZerty: La taille est différente.
$

3 - Suppresion du fichier ou des fichiers ayant des différences

$ tar --delete -f monArchive.tar dossier_a_sauvegarder/aZerty

4 - Mise à jour des fichiers en cas de différences trouvées.

$ tar -uf monArchive.tar dossier_a_sauvegarder

5 - Compression de l'archive

$ gzip monArchive.tar

Etiquettes

Archives cpio

Archives cpio

By ronan, 25 mai, 2012

La commande cpio permet également de faire des archives. Contrairement à la commande tar, elle n'est pas récursive. Tous les noms de fichiers entrant dans la composition de l'archive doivent être lus sur l'entrée standard. L'archive est envoyée sur la sortie standard. La commande est presque toujours utilisée derrière un tube lui-même précédé de la commande find qui permet de générer les noms de fichiers souhaités.

En vérification et restauration, l'archive à traiter est attendue sur l'entrée standard.

Syntaxe

Création d'une archive :
find . | cpio -o [-cv] > archive
Vérification d'une archive :
cpio -it [-cv] < archive [fichiers_a_verifier ...]
Extraction d'une archive :
cpio -i [-cdv] < archive [fichiers_a_extraire ...]
Principales options :
-c : Création/vérification/extraction d'une archive ayant un format d'en-tête d'archive portable entre les systèmes UNIX
-d : Extraction avec création des répertoires s'ils n'existent pas
-i : Extraction d'une archive
-it : Vérification d'une archive
-o : Création d'une archive
-v : Mode verbeux

Exemples

Archivage du dossier dossier_a_sauvegarder

$ find dossier_a_sauvegarder
dossier_a_sauvegarder
dossier_a_sauvegarder/ronan2
dossier_a_sauvegarder/last
dossier_a_sauvegarder/search
dossier_a_sauvegarder/piwik2
dossier_a_sauvegarder/ronan3
dossier_a_sauvegarder/result
dossier_a_sauvegarder/help
dossier_a_sauvegarder/history
dossier_a_sauvegarder/Coucou
dossier_a_sauvegarder/pays2011.txt.1
dossier_a_sauvegarder/monscript
dossier_a_sauvegarder/ronan
dossier_a_sauvegarder/test
dossier_a_sauvegarder/Bonjour
dossier_a_sauvegarder/piwik1
dossier_a_sauvegarder/aZerty
 
$ find dossier_a_sauvegarder | cpio -ocv > monArchive.cpio
dossier_a_sauvegarder
dossier_a_sauvegarder/ronan2
dossier_a_sauvegarder/last
dossier_a_sauvegarder/search
dossier_a_sauvegarder/piwik2
dossier_a_sauvegarder/ronan3
dossier_a_sauvegarder/result
dossier_a_sauvegarder/help
dossier_a_sauvegarder/history
dossier_a_sauvegarder/Coucou
dossier_a_sauvegarder/pays2011.txt.1
dossier_a_sauvegarder/monscript
dossier_a_sauvegarder/ronan
dossier_a_sauvegarder/test
dossier_a_sauvegarder/Bonjour
dossier_a_sauvegarder/piwik1
dossier_a_sauvegarder/aZerty
6674 blocs
$

Vérification de l'archive

$ cpio -icvt < monArchive.cpio
drwxr-xr-x   2 root     root            0 Apr 17 13:15 dossier_a_sauvegarder
-rw-r--r--   1 root     root          281 Apr 17 08:46 dossier_a_sauvegarder/ronan2
-rw-r--r--   1 root     root      3171822 Apr 17 08:46 dossier_a_sauvegarder/last
-rw-r--r--   1 root     root       195732 Apr 17 08:46 dossier_a_sauvegarder/search
-rw-r--r--   1 root     root          622 Apr 17 08:46 dossier_a_sauvegarder/piwik2
-rw-r--r--   1 root     root          281 Apr 17 08:46 dossier_a_sauvegarder/ronan3
-rw-r--r--   1 root     root          116 Apr 17 08:46 dossier_a_sauvegarder/result
-rw-r--r--   1 root     root         3083 Apr 17 08:46 dossier_a_sauvegarder/help
-rw-r--r--   1 root     root        26000 Apr 17 08:46 dossier_a_sauvegarder/history
-rw-r--r--   1 root     root            7 Apr 17 08:46 dossier_a_sauvegarder/Coucou
-rw-r--r--   1 root     root        15667 Apr 17 08:46 dossier_a_sauvegarder/pays2011.txt.1
-rw-r--r--   1 root     root           10 Apr 17 08:46 dossier_a_sauvegarder/monscript
-rw-------   1 root     root          281 Apr 17 08:46 dossier_a_sauvegarder/ronan
-rw-r--r--   1 root     root          387 Apr 17 08:46 dossier_a_sauvegarder/test
-rw-r--r--   1 root     root            0 Apr 17 08:46 dossier_a_sauvegarder/Bonjour
-rw-r--r--   1 root     root          622 Apr 17 08:46 dossier_a_sauvegarder/piwik1
-rw-r--r--   1 root     root           36 May 25 18:11 dossier_a_sauvegarder/aZerty
6674 blocs
$

Création d'une archive cpio compressée avec bzip2

$ find dossier_a_sauvegarder | cpio -ocv | bzip2 -c > monArchive.cpio.bz2
dossier_a_sauvegarder
dossier_a_sauvegarder/ronan2
dossier_a_sauvegarder/last
dossier_a_sauvegarder/search
dossier_a_sauvegarder/piwik2
dossier_a_sauvegarder/ronan3
dossier_a_sauvegarder/result
dossier_a_sauvegarder/help
dossier_a_sauvegarder/history
dossier_a_sauvegarder/Coucou
dossier_a_sauvegarder/pays2011.txt.1
dossier_a_sauvegarder/monscript
dossier_a_sauvegarder/ronan
dossier_a_sauvegarder/test
dossier_a_sauvegarder/Bonjour
dossier_a_sauvegarder/piwik1
dossier_a_sauvegarder/aZerty
6674 blocs
$

Décompression et extraction de l'archive

$ mkdir tmp
$ cp monArchive.cpio.bz2 tmp
$ cd tmp
$ ll
total 276
drwxr-xr-x  2 root root   4096 26 mai   08:59 .
drwx------ 12 root root   4096 26 mai   08:58 ..
-rw-r--r--  1 root root 266276 26 mai   08:59 monArchive.cpio.bz2
$ bzip2 -dc monArchive.cpio.bz2 | cpio -icvd
dossier_a_sauvegarder
dossier_a_sauvegarder/ronan2
dossier_a_sauvegarder/last
dossier_a_sauvegarder/search
dossier_a_sauvegarder/piwik2
dossier_a_sauvegarder/ronan3
dossier_a_sauvegarder/result
dossier_a_sauvegarder/help
dossier_a_sauvegarder/history
dossier_a_sauvegarder/Coucou
dossier_a_sauvegarder/pays2011.txt.1
dossier_a_sauvegarder/monscript
dossier_a_sauvegarder/ronan
dossier_a_sauvegarder/test
dossier_a_sauvegarder/Bonjour
dossier_a_sauvegarder/piwik1
dossier_a_sauvegarder/aZerty
6674 blocs
$ ll
total 280
drwxr-xr-x  3 root root   4096 26 mai   08:59 .
drwx------ 12 root root   4096 26 mai   08:58 ..
drwxr-xr-x  2 root root   4096 26 mai   08:59 dossier_a_sauvegarder
-rw-r--r--  1 root root 266276 26 mai   08:59 monArchive.cpio.bz2
$ ll dossier_a_sauvegarder/
total 3396
drwxr-xr-x 2 root root    4096 26 mai   08:59 .
drwxr-xr-x 3 root root    4096 26 mai   08:59 ..
-rw-r--r-- 1 root root      36 26 mai   08:59 aZerty
-rw-r--r-- 1 root root       0 26 mai   08:59 Bonjour
-rw-r--r-- 1 root root       7 26 mai   08:59 Coucou
-rw-r--r-- 1 root root    3083 26 mai   08:59 help
-rw-r--r-- 1 root root   26000 26 mai   08:59 history
-rw-r--r-- 1 root root 3171822 26 mai   08:59 last
-rw-r--r-- 1 root root      10 26 mai   08:59 monscript
-rw-r--r-- 1 root root   15667 26 mai   08:59 pays2011.txt.1
-rw-r--r-- 1 root root     622 26 mai   08:59 piwik1
-rw-r--r-- 1 root root     622 26 mai   08:59 piwik2
-rw-r--r-- 1 root root     116 26 mai   08:59 result
-rw------- 1 root root     281 26 mai   08:59 ronan
-rw-r--r-- 1 root root     281 26 mai   08:59 ronan2
-rw-r--r-- 1 root root     281 26 mai   08:59 ronan3
-rw-r--r-- 1 root root  195732 26 mai   08:59 search
-rw-r--r-- 1 root root     387 26 mai   08:59 test
$

Etiquettes

Copie physique, transformations : dd

Copie physique, transformations : dd

By ronan, 26 mai, 2012

La commande dd réalise une copie physique d'un flux d'entrée vers un flux de sortie. Chaque octet souhaité du flux d'entrée est copié vers le flux de sortie, indépendamment de ce que représente la donnée.

Syntaxe

dd [if=fichier_entree] [of=fichier_sortie] [ibs=nboctets] [obs=nboctets] [bs=nboctets] [skip=nbblocs] [seek=nbblocs] [count=nbblocs]
Principales options :
if=fichier_entree : Fichier à traiter. Si aucun fichier n'est spécifié, l'entrée standard est traité.
of=fichier_sortie : Fichier de sortie. Si aucun fichier n'est spécifié, la sortie standard est utilisée.
ibs=nboctets : Traiter les données en entrée par blocs de nboctets octets (défaut : 512 octets).
obs=nboctets : Ecrire les données en sortie par blocs de nboctets octets (défaut : 512 octets).
bs=nboctets : Traiter les données d'entrée et de sortie par bloc de nboctets.
skip=nbblocs : Sauter nbblocs en entrée avant de commencer le traitement.
seek=nbblocs : En sortie, écrire à partir du bloc nbblocs.
count=nbblocs : Ecrire uniquement nbblocs de l'entrée vers la sortie.

Exemples

Copie du disque /dev/sda sur le disque /dev/sdb par blocs de 8ko

$ fdisk -l
 
Disque /dev/sda: 8589 Mo, 8589934592 octets
255 têtes, 63 secteurs/piste, 1044 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identifiant de disque : 0x00040afc
 
Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sda1   *           1         994     7977984   83  Linux
La partition 1 ne se termine pas sur une frontière de cylindre.
/dev/sda2             994        1045      407553    5  Etendue
/dev/sda5             994        1045      407552   82  Linux swap / Solaris
 
Disque /dev/sdb: 8589 Mo, 8589934592 octets
255 têtes, 63 secteurs/piste, 1044 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identifiant de disque : 0x00000000
 
Le disque /dev/sdb ne contient pas une table de partition valide

$ dd if=/dev/sda of=/dev/sdb bs=8k
1048576+0 enregistrements lus
1048576+0 enregistrements écrits
8589934592 octets (8,6 GB) copiés, 859,097 s, 10,0 MB/s
$

$ fdisk -l
 
Disque /dev/sda: 8589 Mo, 8589934592 octets
255 têtes, 63 secteurs/piste, 1044 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identifiant de disque : 0x00040afc
 
Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sda1   *           1         994     7977984   83  Linux
La partition 1 ne se termine pas sur une frontière de cylindre.
/dev/sda2             994        1045      407553    5  Etendue
/dev/sda5             994        1045      407552   82  Linux swap / Solaris
 
Disque /dev/sdb: 8589 Mo, 8589934592 octets
255 têtes, 63 secteurs/piste, 1044 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identifiant de disque : 0x00040afc
 
Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sdb1   *           1         994     7977984   83  Linux
La partition 1 ne se termine pas sur une frontière de cylindre.
/dev/sdb2             994        1045      407553    5  Etendue
/dev/sdb5             994        1045      407552   82  Linux swap / Solaris

Idem mais sur un disque sur une machine distante

$ dd if=/dev/sda | ssh 192.168.1.19 dd of=/dev/sdb bs=8k

Supprimer les 5 premiers octets du fichier fic1

$ cat fic1
ceci est un test
$ od -c fic1
0000000   c   e   c   i       e   s   t       u   n       t   e   s   t
0000020  \n
0000021
$ dd bs=1 skip=5 if=fic1 of=fic11
12+0 enregistrements lus
12+0 enregistrements écrits
12 octets (12 B) copiés, 0,00010661 s, 113 kB/s
$ cat fic11
est un test
$ od -c fic11
0000000   e   s   t       u   n       t   e   s   t  \n
0000014
$

Retirer le dernier octet d'un fichier de 6 903 921 octets. La taille du bloc est fixée à 6 903 920 octets. Le nombre de blocs traités est de 1

$ ls -l mon_fichier4
-rw-r--r-- 1 root root 6903921 25 mai   16:36 mon_fichier4
$ dd if=mon_fichier4 of=mon_fichier41 bs=6903920 count=1
1+0 enregistrements lus
1+0 enregistrements écrits
6903920 octets (6,9 MB) copiés, 0,183292 s, 37,7 MB/s
$ ls -l mon_fichier41
-rw-r--r-- 1 root root 6903920 26 mai   11:21 mon_fichier41
$

Etiquettes

Changement d'encodage : iconv

Changement d'encodage : iconv

By ronan, 26 mai, 2012

La commande iconv permet de transformer l'encodage d'un flux de données, typiquement de l'encodage UTF8 vers ISO8859-15 et inversement.

Syntaxe

iconv options [fichiers_a_traiter]
Principales options :
-f encodage_entree : Encodage du fichier d'entrée
-t encodage_sortie : Encodage du fichier de sortie

Exemples

Conversion du fichier fic1 (UTF-8) vers fic2 (ISO8859-15)

$ cat fic1
systèmes
$ od -c fic1
0000000   s   y   s   t 303 250   m   e   s  \n
0000012
$ file fic1
fic1: UTF-8 Unicode text
$ iconv -f UTF8 -t ISO885915 fic1 > fic2
$ cat fic2
syst▒mes
$ od -c fic2
0000000   s   y   s   t 350   m   e   s  \n
0000011
$ file fic2
fic2: ISO-8859 text
$

Afficher la liste complète de tous les jeux des codes de caractères connus.

$ iconv -l
La liste suivante contient tous les jeux des codes de caractères connus. Ceci
ne signifie pas nécessairement que toutes les combinaisons de ces noms peuvent
être utilisées dans les paramètres « FROM » et « TO » des commandes. Un jeu de codes de
caractères peut être affiché avec différents noms (aliases).
 
 437, 500, 500V1, 850, 851, 852, 855, 856, 857, 860, 861, 862, 863, 864, 865,
  866, 866NAV, 869, 874, 904, 1026, 1046, 1047, 8859_1, 8859_2, 8859_3, 8859_4,
  8859_5, 8859_6, 8859_7, 8859_8, 8859_9, 10646-1:1993, 10646-1:1993/UCS4,
  ANSI_X3.4-1968, ANSI_X3.4-1986, ANSI_X3.4, ANSI_X3.110-1983, ANSI_X3.110,
  ARABIC, ARABIC7, ARMSCII-8, ASCII, ASMO-708, ASMO_449, BALTIC, BIG-5,
  BIG-FIVE, BIG5-HKSCS, BIG5, BIG5HKSCS, BIGFIVE, BRF, BS_4730, CA, CN-BIG5,
  CN-GB, CN, CP-AR, CP-GR, CP-HU, CP037, CP038, CP273, CP274, CP275, CP278,
  CP280, CP281, CP282, CP284, CP285, CP290, CP297, CP367, CP420, CP423, CP424,
  CP437, CP500, CP737, CP775, CP803, CP813, CP819, CP850, CP851, CP852, CP855,
  CP856, CP857, CP860, CP861, CP862, CP863, CP864, CP865, CP866, CP866NAV,
  CP868, CP869, CP870, CP871, CP874, CP875, CP880, CP891, CP901, CP902, CP903,
  CP904, CP905, CP912, CP915, CP916, CP918, CP920, CP921, CP922, CP930, CP932,
  CP933, CP935, CP936, CP937, CP939, CP949, CP950, CP1004, CP1008, CP1025,
  CP1026, CP1046, CP1047, CP1070, CP1079, CP1081, CP1084, CP1089, CP1097,
  CP1112, CP1122, CP1123, CP1124, CP1125, CP1129, CP1130, CP1132, CP1133,
  CP1137, CP1140, CP1141, CP1142, CP1143, CP1144, CP1145, CP1146, CP1147,
  CP1148, CP1149, CP1153, CP1154, CP1155, CP1156, CP1157, CP1158, CP1160,
  CP1161, CP1162, CP1163, CP1164, CP1166, CP1167, CP1250, CP1251, CP1252,
  CP1253, CP1254, CP1255, CP1256, CP1257, CP1258, CP1282, CP1361, CP1364,
  CP1371, CP1388, CP1390, CP1399, CP4517, CP4899, CP4909, CP4971, CP5347,
  CP9030, CP9066, CP9448, CP10007, CP12712, CP16804, CPIBM861, CSA7-1, CSA7-2,
  CSASCII, CSA_T500-1983, CSA_T500, CSA_Z243.4-1985-1, CSA_Z243.4-1985-2,
  CSA_Z243.419851, CSA_Z243.419852, CSDECMCS, CSEBCDICATDE, CSEBCDICATDEA,
  CSEBCDICCAFR, CSEBCDICDKNO, CSEBCDICDKNOA, CSEBCDICES, CSEBCDICESA,
  CSEBCDICESS, CSEBCDICFISE, CSEBCDICFISEA, CSEBCDICFR, CSEBCDICIT, CSEBCDICPT,
  CSEBCDICUK, CSEBCDICUS, CSEUCKR, CSEUCPKDFMTJAPANESE, CSGB2312, CSHPROMAN8,
  CSIBM037, CSIBM038, CSIBM273, CSIBM274, CSIBM275, CSIBM277, CSIBM278,
  CSIBM280, CSIBM281, CSIBM284, CSIBM285, CSIBM290, CSIBM297, CSIBM420,
  CSIBM423, CSIBM424, CSIBM500, CSIBM803, CSIBM851, CSIBM855, CSIBM856,
  CSIBM857, CSIBM860, CSIBM863, CSIBM864, CSIBM865, CSIBM866, CSIBM868,
  CSIBM869, CSIBM870, CSIBM871, CSIBM880, CSIBM891, CSIBM901, CSIBM902,
  CSIBM903, CSIBM904, CSIBM905, CSIBM918, CSIBM921, CSIBM922, CSIBM930,
  CSIBM932, CSIBM933, CSIBM935, CSIBM937, CSIBM939, CSIBM943, CSIBM1008,
  CSIBM1025, CSIBM1026, CSIBM1097, CSIBM1112, CSIBM1122, CSIBM1123, CSIBM1124,
  CSIBM1129, CSIBM1130, CSIBM1132, CSIBM1133, CSIBM1137, CSIBM1140, CSIBM1141,
  CSIBM1142, CSIBM1143, CSIBM1144, CSIBM1145, CSIBM1146, CSIBM1147, CSIBM1148,
  CSIBM1149, CSIBM1153, CSIBM1154, CSIBM1155, CSIBM1156, CSIBM1157, CSIBM1158,
  CSIBM1160, CSIBM1161, CSIBM1163, CSIBM1164, CSIBM1166, CSIBM1167, CSIBM1364,
  CSIBM1371, CSIBM1388, CSIBM1390, CSIBM1399, CSIBM4517, CSIBM4899, CSIBM4909,
  CSIBM4971, CSIBM5347, CSIBM9030, CSIBM9066, CSIBM9448, CSIBM12712,
  CSIBM16804, CSIBM11621162, CSISO4UNITEDKINGDOM, CSISO10SWEDISH,
  CSISO11SWEDISHFORNAMES, CSISO14JISC6220RO, CSISO15ITALIAN, CSISO16PORTUGESE,
  CSISO17SPANISH, CSISO18GREEK7OLD, CSISO19LATINGREEK, CSISO21GERMAN,
  CSISO25FRENCH, CSISO27LATINGREEK1, CSISO49INIS, CSISO50INIS8,
  CSISO51INISCYRILLIC, CSISO58GB1988, CSISO60DANISHNORWEGIAN,
  CSISO60NORWEGIAN1, CSISO61NORWEGIAN2, CSISO69FRENCH, CSISO84PORTUGUESE2,
  CSISO85SPANISH2, CSISO86HUNGARIAN, CSISO88GREEK7, CSISO89ASMO449, CSISO90,
  CSISO92JISC62991984B, CSISO99NAPLPS, CSISO103T618BIT, CSISO111ECMACYRILLIC,
  CSISO121CANADIAN1, CSISO122CANADIAN2, CSISO139CSN369103, CSISO141JUSIB1002,
  CSISO143IECP271, CSISO150, CSISO150GREEKCCITT, CSISO151CUBA,
  CSISO153GOST1976874, CSISO646DANISH, CSISO2022CN, CSISO2022JP, CSISO2022JP2,
  CSISO2022KR, CSISO2033, CSISO5427CYRILLIC, CSISO5427CYRILLIC1981,
  CSISO5428GREEK, CSISO10367BOX, CSISOLATIN1, CSISOLATIN2, CSISOLATIN3,
  CSISOLATIN4, CSISOLATIN5, CSISOLATIN6, CSISOLATINARABIC, CSISOLATINCYRILLIC,
  CSISOLATINGREEK, CSISOLATINHEBREW, CSKOI8R, CSKSC5636, CSMACINTOSH,
  CSNATSDANO, CSNATSSEFI, CSN_369103, CSPC8CODEPAGE437, CSPC775BALTIC,
  CSPC850MULTILINGUAL, CSPC862LATINHEBREW, CSPCP852, CSSHIFTJIS, CSUCS4,
  CSUNICODE, CSWINDOWS31J, CUBA, CWI-2, CWI, CYRILLIC, DE, DEC-MCS, DEC,
  DECMCS, DIN_66003, DK, DS2089, DS_2089, E13B, EBCDIC-AT-DE-A, EBCDIC-AT-DE,
  EBCDIC-BE, EBCDIC-BR, EBCDIC-CA-FR, EBCDIC-CP-AR1, EBCDIC-CP-AR2,
  EBCDIC-CP-BE, EBCDIC-CP-CA, EBCDIC-CP-CH, EBCDIC-CP-DK, EBCDIC-CP-ES,
  EBCDIC-CP-FI, EBCDIC-CP-FR, EBCDIC-CP-GB, EBCDIC-CP-GR, EBCDIC-CP-HE,
  EBCDIC-CP-IS, EBCDIC-CP-IT, EBCDIC-CP-NL, EBCDIC-CP-NO, EBCDIC-CP-ROECE,
  EBCDIC-CP-SE, EBCDIC-CP-TR, EBCDIC-CP-US, EBCDIC-CP-WT, EBCDIC-CP-YU,
  EBCDIC-CYRILLIC, EBCDIC-DK-NO-A, EBCDIC-DK-NO, EBCDIC-ES-A, EBCDIC-ES-S,
  EBCDIC-ES, EBCDIC-FI-SE-A, EBCDIC-FI-SE, EBCDIC-FR, EBCDIC-GREEK, EBCDIC-INT,
  EBCDIC-INT1, EBCDIC-IS-FRISS, EBCDIC-IT, EBCDIC-JP-E, EBCDIC-JP-KANA,
  EBCDIC-PT, EBCDIC-UK, EBCDIC-US, EBCDICATDE, EBCDICATDEA, EBCDICCAFR,
  EBCDICDKNO, EBCDICDKNOA, EBCDICES, EBCDICESA, EBCDICESS, EBCDICFISE,
  EBCDICFISEA, EBCDICFR, EBCDICISFRISS, EBCDICIT, EBCDICPT, EBCDICUK, EBCDICUS,
  ECMA-114, ECMA-118, ECMA-128, ECMA-CYRILLIC, ECMACYRILLIC, ELOT_928, ES, ES2,
  EUC-CN, EUC-JISX0213, EUC-JP-MS, EUC-JP, EUC-KR, EUC-TW, EUCCN, EUCJP-MS,
  EUCJP-OPEN, EUCJP-WIN, EUCJP, EUCKR, EUCTW, FI, FR, GB, GB2312, GB13000,
  GB18030, GBK, GB_1988-80, GB_198880, GEORGIAN-ACADEMY, GEORGIAN-PS,
  GOST_19768-74, GOST_19768, GOST_1976874, GREEK-CCITT, GREEK, GREEK7-OLD,
  GREEK7, GREEK7OLD, GREEK8, GREEKCCITT, HEBREW, HP-GREEK8, HP-ROMAN8,
  HP-ROMAN9, HP-THAI8, HP-TURKISH8, HPGREEK8, HPROMAN8, HPROMAN9, HPTHAI8,
  HPTURKISH8, HU, IBM-803, IBM-856, IBM-901, IBM-902, IBM-921, IBM-922,
  IBM-930, IBM-932, IBM-933, IBM-935, IBM-937, IBM-939, IBM-943, IBM-1008,
  IBM-1025, IBM-1046, IBM-1047, IBM-1097, IBM-1112, IBM-1122, IBM-1123,
  IBM-1124, IBM-1129, IBM-1130, IBM-1132, IBM-1133, IBM-1137, IBM-1140,
  IBM-1141, IBM-1142, IBM-1143, IBM-1144, IBM-1145, IBM-1146, IBM-1147,
  IBM-1148, IBM-1149, IBM-1153, IBM-1154, IBM-1155, IBM-1156, IBM-1157,
  IBM-1158, IBM-1160, IBM-1161, IBM-1162, IBM-1163, IBM-1164, IBM-1166,
  IBM-1167, IBM-1364, IBM-1371, IBM-1388, IBM-1390, IBM-1399, IBM-4517,
  IBM-4899, IBM-4909, IBM-4971, IBM-5347, IBM-9030, IBM-9066, IBM-9448,
  IBM-12712, IBM-16804, IBM037, IBM038, IBM256, IBM273, IBM274, IBM275, IBM277,
  IBM278, IBM280, IBM281, IBM284, IBM285, IBM290, IBM297, IBM367, IBM420,
  IBM423, IBM424, IBM437, IBM500, IBM775, IBM803, IBM813, IBM819, IBM848,
  IBM850, IBM851, IBM852, IBM855, IBM856, IBM857, IBM860, IBM861, IBM862,
  IBM863, IBM864, IBM865, IBM866, IBM866NAV, IBM868, IBM869, IBM870, IBM871,
  IBM874, IBM875, IBM880, IBM891, IBM901, IBM902, IBM903, IBM904, IBM905,
  IBM912, IBM915, IBM916, IBM918, IBM920, IBM921, IBM922, IBM930, IBM932,
  IBM933, IBM935, IBM937, IBM939, IBM943, IBM1004, IBM1008, IBM1025, IBM1026,
  IBM1046, IBM1047, IBM1089, IBM1097, IBM1112, IBM1122, IBM1123, IBM1124,
  IBM1129, IBM1130, IBM1132, IBM1133, IBM1137, IBM1140, IBM1141, IBM1142,
  IBM1143, IBM1144, IBM1145, IBM1146, IBM1147, IBM1148, IBM1149, IBM1153,
  IBM1154, IBM1155, IBM1156, IBM1157, IBM1158, IBM1160, IBM1161, IBM1162,
  IBM1163, IBM1164, IBM1166, IBM1167, IBM1364, IBM1371, IBM1388, IBM1390,
  IBM1399, IBM4517, IBM4899, IBM4909, IBM4971, IBM5347, IBM9030, IBM9066,
  IBM9448, IBM12712, IBM16804, IEC_P27-1, IEC_P271, INIS-8, INIS-CYRILLIC,
  INIS, INIS8, INISCYRILLIC, ISIRI-3342, ISIRI3342, ISO-2022-CN-EXT,
  ISO-2022-CN, ISO-2022-JP-2, ISO-2022-JP-3, ISO-2022-JP, ISO-2022-KR,
  ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6,
  ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-9E, ISO-8859-10, ISO-8859-11,
  ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16, ISO-10646,
  ISO-10646/UCS2, ISO-10646/UCS4, ISO-10646/UTF-8, ISO-10646/UTF8, ISO-CELTIC,
  ISO-IR-4, ISO-IR-6, ISO-IR-8-1, ISO-IR-9-1, ISO-IR-10, ISO-IR-11, ISO-IR-14,
  ISO-IR-15, ISO-IR-16, ISO-IR-17, ISO-IR-18, ISO-IR-19, ISO-IR-21, ISO-IR-25,
  ISO-IR-27, ISO-IR-37, ISO-IR-49, ISO-IR-50, ISO-IR-51, ISO-IR-54, ISO-IR-55,
  ISO-IR-57, ISO-IR-60, ISO-IR-61, ISO-IR-69, ISO-IR-84, ISO-IR-85, ISO-IR-86,
  ISO-IR-88, ISO-IR-89, ISO-IR-90, ISO-IR-92, ISO-IR-98, ISO-IR-99, ISO-IR-100,
  ISO-IR-101, ISO-IR-103, ISO-IR-109, ISO-IR-110, ISO-IR-111, ISO-IR-121,
  ISO-IR-122, ISO-IR-126, ISO-IR-127, ISO-IR-138, ISO-IR-139, ISO-IR-141,
  ISO-IR-143, ISO-IR-144, ISO-IR-148, ISO-IR-150, ISO-IR-151, ISO-IR-153,
  ISO-IR-155, ISO-IR-156, ISO-IR-157, ISO-IR-166, ISO-IR-179, ISO-IR-193,
  ISO-IR-197, ISO-IR-199, ISO-IR-203, ISO-IR-209, ISO-IR-226, ISO/TR_11548-1,
  ISO646-CA, ISO646-CA2, ISO646-CN, ISO646-CU, ISO646-DE, ISO646-DK, ISO646-ES,
  ISO646-ES2, ISO646-FI, ISO646-FR, ISO646-FR1, ISO646-GB, ISO646-HU,
  ISO646-IT, ISO646-JP-OCR-B, ISO646-JP, ISO646-KR, ISO646-NO, ISO646-NO2,
  ISO646-PT, ISO646-PT2, ISO646-SE, ISO646-SE2, ISO646-US, ISO646-YU,
  ISO2022CN, ISO2022CNEXT, ISO2022JP, ISO2022JP2, ISO2022KR, ISO6937,
  ISO8859-1, ISO8859-2, ISO8859-3, ISO8859-4, ISO8859-5, ISO8859-6, ISO8859-7,
  ISO8859-8, ISO8859-9, ISO8859-9E, ISO8859-10, ISO8859-11, ISO8859-13,
  ISO8859-14, ISO8859-15, ISO8859-16, ISO11548-1, ISO88591, ISO88592, ISO88593,
  ISO88594, ISO88595, ISO88596, ISO88597, ISO88598, ISO88599, ISO88599E,
  ISO885910, ISO885911, ISO885913, ISO885914, ISO885915, ISO885916,
  ISO_646.IRV:1991, ISO_2033-1983, ISO_2033, ISO_5427-EXT, ISO_5427,
  ISO_5427:1981, ISO_5427EXT, ISO_5428, ISO_5428:1980, ISO_6937-2,
  ISO_6937-2:1983, ISO_6937, ISO_6937:1992, ISO_8859-1, ISO_8859-1:1987,
  ISO_8859-2, ISO_8859-2:1987, ISO_8859-3, ISO_8859-3:1988, ISO_8859-4,
  ISO_8859-4:1988, ISO_8859-5, ISO_8859-5:1988, ISO_8859-6, ISO_8859-6:1987,
  ISO_8859-7, ISO_8859-7:1987, ISO_8859-7:2003, ISO_8859-8, ISO_8859-8:1988,
  ISO_8859-9, ISO_8859-9:1989, ISO_8859-9E, ISO_8859-10, ISO_8859-10:1992,
  ISO_8859-14, ISO_8859-14:1998, ISO_8859-15, ISO_8859-15:1998, ISO_8859-16,
  ISO_8859-16:2001, ISO_9036, ISO_10367-BOX, ISO_10367BOX, ISO_11548-1,
  ISO_69372, IT, JIS_C6220-1969-RO, JIS_C6229-1984-B, JIS_C62201969RO,
  JIS_C62291984B, JOHAB, JP-OCR-B, JP, JS, JUS_I.B1.002, KOI-7, KOI-8, KOI8-R,
  KOI8-RU, KOI8-T, KOI8-U, KOI8, KOI8R, KOI8U, KSC5636, L1, L2, L3, L4, L5, L6,
  L7, L8, L10, LATIN-9, LATIN-GREEK-1, LATIN-GREEK, LATIN1, LATIN2, LATIN3,
  LATIN4, LATIN5, LATIN6, LATIN7, LATIN8, LATIN9, LATIN10, LATINGREEK,
  LATINGREEK1, MAC-CENTRALEUROPE, MAC-CYRILLIC, MAC-IS, MAC-SAMI, MAC-UK, MAC,
  MACCYRILLIC, MACINTOSH, MACIS, MACUK, MACUKRAINIAN, MIK, MS-ANSI, MS-ARAB,
  MS-CYRL, MS-EE, MS-GREEK, MS-HEBR, MS-MAC-CYRILLIC, MS-TURK, MS932, MS936,
  MSCP949, MSCP1361, MSMACCYRILLIC, MSZ_7795.3, MS_KANJI, NAPLPS, NATS-DANO,
  NATS-SEFI, NATSDANO, NATSSEFI, NC_NC0010, NC_NC00-10, NC_NC00-10:81,
  NF_Z_62-010, NF_Z_62-010_(1973), NF_Z_62-010_1973, NF_Z_62010,
  NF_Z_62010_1973, NO, NO2, NS_4551-1, NS_4551-2, NS_45511, NS_45512,
  OS2LATIN1, OSF00010001, OSF00010002, OSF00010003, OSF00010004, OSF00010005,
  OSF00010006, OSF00010007, OSF00010008, OSF00010009, OSF0001000A, OSF00010020,
  OSF00010100, OSF00010101, OSF00010102, OSF00010104, OSF00010105, OSF00010106,
  OSF00030010, OSF0004000A, OSF0005000A, OSF05010001, OSF100201A4, OSF100201A8,
  OSF100201B5, OSF100201F4, OSF100203B5, OSF1002011C, OSF1002011D, OSF1002035D,
  OSF1002035E, OSF1002035F, OSF1002036B, OSF1002037B, OSF10010001, OSF10010004,
  OSF10010006, OSF10020025, OSF10020111, OSF10020115, OSF10020116, OSF10020118,
  OSF10020122, OSF10020129, OSF10020352, OSF10020354, OSF10020357, OSF10020359,
  OSF10020360, OSF10020364, OSF10020365, OSF10020366, OSF10020367, OSF10020370,
  OSF10020387, OSF10020388, OSF10020396, OSF10020402, OSF10020417, PT, PT2,
  PT154, R8, R9, RK1048, ROMAN8, ROMAN9, RUSCII, SE, SE2, SEN_850200_B,
  SEN_850200_C, SHIFT-JIS, SHIFT_JIS, SHIFT_JISX0213, SJIS-OPEN, SJIS-WIN,
  SJIS, SS636127, STRK1048-2002, ST_SEV_358-88, T.61-8BIT, T.61, T.618BIT,
  TCVN-5712, TCVN, TCVN5712-1, TCVN5712-1:1993, THAI8, TIS-620, TIS620-0,
  TIS620.2529-1, TIS620.2533-0, TIS620, TS-5881, TSCII, TURKISH8, UCS-2,
  UCS-2BE, UCS-2LE, UCS-4, UCS-4BE, UCS-4LE, UCS2, UCS4, UHC, UJIS, UK,
  UNICODE, UNICODEBIG, UNICODELITTLE, US-ASCII, US, UTF-7, UTF-8, UTF-16,
  UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, UTF-32LE, UTF7, UTF8, UTF16, UTF16BE,
  UTF16LE, UTF32, UTF32BE, UTF32LE, VISCII, WCHAR_T, WIN-SAMI-2, WINBALTRIM,
  WINDOWS-31J, WINDOWS-874, WINDOWS-936, WINDOWS-1250, WINDOWS-1251,
  WINDOWS-1252, WINDOWS-1253, WINDOWS-1254, WINDOWS-1255, WINDOWS-1256,
  WINDOWS-1257, WINDOWS-1258, WINSAMI2, WS2, YU
$

Etiquettes