Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:systeme:commandes:les-commandes-join-paste-split-et-nl [07/06/2014 10:41] Hypathie [Introduction] |
doc:systeme:commandes:les-commandes-join-paste-split-et-nl [07/06/2014 18:04] Hypathie [sort] |
||
---|---|---|---|
Ligne 18: | Ligne 18: | ||
*[[doc:systeme:commandes:creer#trouver-un-fichier|Trouver un fichier]] | *[[doc:systeme:commandes:creer#trouver-un-fichier|Trouver un fichier]] | ||
*[[doc:systeme:expand|commande expand]] | *[[doc:systeme:expand|commande expand]] | ||
+ | *[[doc:systeme:split|commande split]] | ||
=====La commande join ===== | =====La commande join ===== | ||
+ | ===Syntaxe de la commande join === | ||
+ | <code user> | ||
+ | join [options]... fichier1 fichier2 | ||
+ | </code> | ||
+ | ===Préparation=== | ||
+ | Soit deux fichiers : "users" et "infos-users" | ||
+ | <code user> | ||
+ | cat ~/Essai-text-processing/users | ||
+ | </code> | ||
+ | retour : | ||
+ | <code> | ||
+ | 01 Toto | ||
+ | 02 Titi | ||
+ | 03 Lili | ||
+ | </code> | ||
+ | |||
+ | <code user> | ||
+ | cat ~/Essai-text-processing/infos-users | ||
+ | </code> | ||
+ | |||
+ | Retour : | ||
+ | <code> | ||
+ | toto@gmail.com 01 | ||
+ | titi@gmx.fr 02 | ||
+ | lili@hotmail.com 03 | ||
+ | </code> | ||
+ | |||
+ | ===Fusion de ces deux fichiers === | ||
+ | |||
+ | <code> | ||
+ | join -1 1 -2 2 ~/Essai-text-processing/users ~/Essai-text-processing/infos-users | ||
+ | </code> | ||
+ | * option -1 : donne le n° de colonne du champ commun, pour le premier document | ||
+ | * 1 : premier fichier | ||
+ | * option -2 : n° de colonne du champ commun, pour le deuxième document | ||
+ | * 2 : deuxième fichier | ||
+ | * -j option CHAMP : équivalent à « -1 CHAMP -2 CHAMP » | ||
+ | * -i : ignorer les différences de casse | ||
+ | * voir man join pour plus d'option | ||
+ | |||
+ | Retour : | ||
+ | <code> | ||
+ | 01 Toto toto@gmail.com | ||
+ | 02 Titi titi@gmx.fr | ||
+ | 03 Lili lili@hotmail.com | ||
+ | </code> | ||
+ | <note> | ||
+ | Pour fusionner des fichiers qui ont en commun ":"\ | ||
+ | join -t':' -2 1 -2 2 fichier1 fichier2 | ||
+ | </note> | ||
+ | |||
+ | === concaténation de la fusion dans un fichier=== | ||
+ | <code user> | ||
+ | join -1 1 -2 2 ~/Essai-text-processing/users ~/Essai-text-processing/infos-users > ~/Essai-text-processing/adr-users | ||
+ | </code> | ||
+ | ===vérification === | ||
+ | <code user> | ||
+ | cat ~/Essai-text-processing/adr-users | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | 01 Toto toto@gmail.com | ||
+ | 02 Titi titi@gmx.fr | ||
+ | 03 Lili lili@hotmail.com | ||
+ | </code> | ||
=====La commande paste ===== | =====La commande paste ===== | ||
+ | ===Syntaxe de la commande paste === | ||
+ | |||
+ | paste [options]... [fichier]... | ||
+ | |||
+ | La jointure se fait selon lignes à ligne, donc il faut des fichiers avec des lignes rangées dans le même ordre. | ||
+ | ===Préparation === | ||
+ | Visualisons les deux fichiers concernés, "users" et "infos-users" | ||
+ | <code user> | ||
+ | cat ~/Essai-text-processing/users | ||
+ | # retour : | ||
+ | 01 Toto | ||
+ | 02 Titi | ||
+ | 03 Lili | ||
+ | |||
+ | cat ~/Essai-text-processing/infos-users | ||
+ | #retour : | ||
+ | toto@gmail.com 01 | ||
+ | titi@gmx.fr 02 | ||
+ | lili@hotmail.com 03 | ||
+ | </code> | ||
+ | |||
+ | ===Regroupement des lignes des deux fichiers === | ||
+ | Retour: | ||
+ | |||
+ | <code user> | ||
+ | paste ~/Essai-text-processing/users ~/Essai-text-processing/infos-users | ||
+ | </code> | ||
+ | |||
+ | Retour : | ||
+ | |||
+ | <code> | ||
+ | 01 Toto toto@gmail.com 01 | ||
+ | 02 Titi titi@gmx.fr 02 | ||
+ | 03 Lili lili@hotmail.com 03 | ||
+ | </code> | ||
+ | ===Concaténation du retour dans un fichier "paste-users-infos" qui sera créé=== | ||
+ | |||
+ | <code user> | ||
+ | paste ~/Essai-text-processing/users ~/Essai-text-processing/infos-users > ~/Essai-text-processing/paste-users-infos | ||
+ | </code> | ||
+ | |||
+ | === Vérification === | ||
+ | <code user> | ||
+ | 01 Toto toto@gmail.com 01 | ||
+ | 02 Titi titi@gmx.fr 02 | ||
+ | 03 Lili lili@hotmail.com 03 | ||
+ | </code> | ||
+ | |||
+ | ===== sort ===== | ||
+ | ===Syntaxe=== | ||
+ | |||
+ | sort [options [+POS1] [-POS2]] [fichier...] | ||
+ | |||
+ | ===Préparation=== | ||
+ | |||
+ | Soit le fichier "~/Essai-text-processing/users.sort" | ||
+ | <code user> | ||
+ | cat ~/Essai-text-processing/users.sort | ||
+ | # Retour | ||
+ | 5 Papi | ||
+ | 1 Toto | ||
+ | 3 Lili | ||
+ | 2 Titi | ||
+ | 4 Mami | ||
+ | 003 Zaza | ||
+ | 01 Nani | ||
+ | </code> | ||
+ | === tri par défaut=== | ||
+ | <code user> | ||
+ | sort ~/Essai-text-processing/users.sort | ||
+ | # Retour : | ||
+ | 003 Zaza | ||
+ | 01 Nani | ||
+ | 1 Toto | ||
+ | 2 Titi | ||
+ | 3 Lili | ||
+ | 4 Mami | ||
+ | 5 Papi | ||
+ | </code> | ||
+ | |||
+ | ===Tri alphabétique d'une simple colonne=== | ||
+ | |||
+ | <code user> | ||
+ | cat ~/Essai-text-processing/sort.abc | ||
+ | # Retour: | ||
+ | tomate | ||
+ | fraise | ||
+ | abricot | ||
+ | ananas | ||
+ | kiwi | ||
+ | pomme | ||
+ | </code> | ||
+ | |||
+ | <code user> | ||
+ | sort ~/Essai-text-processing/sort.abc | ||
+ | # Retour: | ||
+ | abricot | ||
+ | ananas | ||
+ | fraise | ||
+ | kiwi | ||
+ | pomme | ||
+ | tomate | ||
+ | </code> | ||
+ | |||
+ | ===Tri avec choix de colonne === | ||
+ | <code user> | ||
+ | cat ~/Essai-text-processing/sort.abc | ||
+ | # Retour : | ||
+ | tomate:4 | ||
+ | fraise:1 | ||
+ | abricot:2 | ||
+ | ananas:6 | ||
+ | kiwi:5 | ||
+ | pomme:3 | ||
+ | </code> | ||
+ | |||
+ | <code user> | ||
+ | sort -t':' -k 2n ~/Essai-text-processing/sort.abc | ||
+ | fraise:1 | ||
+ | abricot:2 | ||
+ | pomme:3 | ||
+ | tomate:4 | ||
+ | kiwi:5 | ||
+ | ananas:6 | ||
+ | </code> | ||
+ | |||
+ | <note tip> | ||
+ | Les options très utiles: | ||
+ | -t : pour spécifier le séparateur (par défaut ce sont les espaces ou les tabulations qui délimitent les colonnes) | ||
+ | -k : pour spécifier la colonne | ||
+ | -2 : n° de colonne | ||
+ | -n : pour spécifier qu'il s'agit d'un tri numérique | ||
+ | -d : pour tri dictionnaire | ||
+ | -r : pour un tri inverse (-rn ou -rd) | ||
+ | -M : ordre chronologique | ||
+ | </note> | ||
+ | ===Tri selon plusieurs colonnes === | ||
+ | <code user> | ||
+ | cat ~/Essai-text-processing/sort.123abc | ||
+ | # Retour: | ||
+ | tomate:x:c | ||
+ | fraise:1 | ||
+ | abricot:2 | ||
+ | ananas:x:b | ||
+ | kiwi:x:a | ||
+ | pomme:3 | ||
+ | </code> | ||
+ | |||
+ | <code user> | ||
+ | sort -t':' -k 2n -k 3d ~/Essai-text-processing/sort.123abc | ||
+ | # Retour: | ||
+ | kiwi:x:a | ||
+ | ananas:x:b | ||
+ | tomate:x:c | ||
+ | fraise:1 | ||
+ | abricot:2 | ||
+ | pomme:3 | ||
+ | </code> | ||
+ | |||
+ | === concaténer et créer un fichier avec la résultat=== | ||
+ | <code user> | ||
+ | sort -t':' -k 2n -k 3d ~/Essai-text-processing/sort.123abc > ~/Essai-text-processing/sort.123abc.ok | ||
+ | </code> | ||
- | =====La commande split ===== | + | ===Vérifier === |
+ | <code user> | ||
+ | cat ~/Essai-text-processing/sort.123abc.okkiwi:x:a | ||
+ | # Retour : | ||
+ | ananas:x:b | ||
+ | tomate:x:c | ||
+ | fraise:1 | ||
+ | abricot:2 | ||
+ | pomme:3 | ||
+ | </code> | ||
=====La commande nl ===== | =====La commande nl ===== | ||