logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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:40]
Hypathie [Les commandes : join, paste, split, et nl]
doc:systeme:commandes:les-commandes-join-paste-split-et-nl [08/06/2014 08:28]
Hypathie [Introduction]
Ligne 17: Ligne 17:
   *[[doc:​systeme:​commandes:​le_debianiste_qui_papillonne#​les-fichiers|Les autres commandes sur les fichiers]]\\   *[[doc:​systeme:​commandes:​le_debianiste_qui_papillonne#​les-fichiers|Les autres commandes sur les fichiers]]\\
   *[[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]]
  
 +
 +===== la commande fmt=====
 +===Syntaxe ===
 +
 +  fmt [options] [fichier...]
 +  ​
 +=== préparation===
 +Création du fichier "​~/​Essai-text-processing/​essai-fmt"​
 +
 +<code user>
 +cat > ~/​Essai-text-processing/​essai-fmt <<EOF
 +> chez debian-facile c'est facile ... très facile ... très très facile ... très très très très très très facile ... facile et encore facile !
 +> EOF
 +</​code>​
 +
 +===Affichage du contenu d'un fichier en respectant les mots ===
 +  * L'​affichage avec la commande "​cat"​ est parfois difficile à lire:
 +<code user>
 +cat ~/​Essai-text-processing/​essai-fmt
 +# Retour :
 +chez debian-facile c'est facile ... très facile ... très très facile ... très tr
 +ès très très très très facile ... facile et encore facile !
 +</​code>​
 +
 +  * Affichage avec la commande "​fmt"​ :
 +<code user>
 +fmt ~/​Essai-text-processing/​essai-fmt
 +# Retour :
 +chez debian-facile c'est facile ... très facile ... très très facile
 +... très très très très très très facile ... facile et encore
 +facile !
 +</​code>​
 +<​note>​
 +Par défaut, la commande "​fmt"​ affiche le contenu d'un fichier par ligne de 75 caractères maximum.
 +</​note>​
 +===Options utiles ===
 +  * -w : pour indiquer le nombre de caractère par ligne
 +<code user>
 +fmt -w 20 ~/​Essai-text-processing/​essai-fmt
 +# Retour :
 +chez debian-facile
 +c'est facile
 +... très facile
 +... très très
 +facile ... très
 +très très très
 +très très facile
 +... facile et
 +encore facile !
 +</​code>​
 +===Combiner fmt et less pour encore plus de lisibilité ===
 +<code user>
 +fmt -w 20 ~/​Essai-text-processing/​essai-fmt | less
 +# Retour :
 +chez debian-facile
 +c'est facile
 +... très facile
 +... très très
 +facile ... très
 +très très très
 +très très facile
 +... facile et
 +encore facile !
 +(END)
 +
 +</​code>​
 +  * Voir [[doc:​editeurs:​less| la commande less]]
 +
 +=====La commande nl =====
 +Permet de numéroter l'​affichage d'un fichier.
 +
 +===Syntaxe ===
 +
 +  nl [options] [fichier...]
 +
 +===Préparation ===
 +  * copie du fichier ~/.bashrc et visualisation :
 +
 +<code user>
 +cat ~/.bashrc >> ~/​Essai-text-processing/​bashrc-bis
 +</​code>​
 +  * comparons avec l'​affichage de less
 +<code user>
 +less ~/​Essai-text-processing/​bashrc-bis
 +</​code>​
 +Extrait du retour :
 +<code user>
 +# ~/.bashrc: executed by bash(1) for non-login shells.
 +# see /​usr/​share/​doc/​bash/​examples/​startup-files (in the package bash-doc)
 +# for examples
 +
 +# If not running interactively,​ don't do anything
 +case $- in
 +    *i*) ;;
 +      *) return;;
 +esac
 +[...]
 +===Affichage numéroté ===
 +<​code>​
 +nl ~/​Essai-text-processing/​bashrc-bis
 +</code user>
 +Extrait du retour :
 +<​code>​
 +     1 # ~/.bashrc: executed by bash(1) for non-login shells.
 +     2 # see /​usr/​share/​doc/​bash/​examples/​startup-files (in the package bash-doc)
 +     3 # for examples
 +       
 +     4 # If not running interactively,​ don't do anything
 +     ​5 case $- in
 +     ​6  ​   *i*) ;;
 +     ​7  ​     *) return;;
 +     ​8 esac
 + [...]
 +</code user>
 +===Pour encore plus de lisibilité ===
 +
 +<code user>
 +fmt -w 65 ~/​Essai-text-processing/​bashrc-bis | nl ~/​Essai-text-processing/​bashrc-bis | less
 +</​code>​
 +
 +Extrait du retour :
 +
 +<​code>​
 +     ​1 ​ # ~/.bashrc: executed by bash(1) for non-login shells.
 +     ​2 ​ # see /​usr/​share/​doc/​bash/​examples/​startup-files (in the package bash-doc)
 +     ​3 ​ # for examples
 +       
 +     ​4 ​ # If not running interactively,​ don't do anything
 +     ​5 ​ case $- in
 +     ​6 ​     *i*) ;;
 +     ​7 ​       *) return;;
 +     ​8 ​ esac
 +       
 +[...]
 +</​code>​
 =====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>​
 +
 +===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 tr =====
 +Elle permet de traduire, c'​est-à-dire,​ changer des lettres
 +===Syntaxe ===
 +
 +  tr [options] ens1 ens2
 +
 +===Exemples ===
 +<code user>
 +cat ~/​Essai-text-processing/​tr-essai
 +# retour:
 +Pierre Paul Jacques
 +</​code>​
 +
 +<code user>
 +tr P p  < ~/​Essai-text-processing/​tr-essai
 +pierre paul Jacques
 +</​code>​
 +
 +<code user>
 +cat ~/​Essai-text-processing/​tr-essai
 +# retour:
 +Pierre Paul Jacques
 +</​code>​
 +
 +<code user>
 +tr P X  < ~/​Essai-text-processing/​tr-essai
 +Xierre Xaul Jacques
 +</​code>​
 +
 +<code user>
 +cat ~/​Essai-text-processing/​tr-essai
 +# retour :
 +Pierre Paul Jacques
 +</​code>​
 +
 +<code user>
 +tr PJ pj < ~/​Essai-text-processing/​tr-essai
 +pierre paul jacques
 +</​code>​
 +
 +
 +
 +=====La commande uniq =====
 +Elle permet d'​éliminer les lignes dupliquées d'un fichier trié.
 +===Syntaxe===
 +
 +  uniq [options] [fichier-entrée] [fichier-sortie]
 +  ​
 +===Préparation ===
 +<code user>
 +cat ~/​Essai-text-processing/​users-uniq
 +# Retour:
 +Papi
 +1 Toto
 +3 Lili
 +2 Titi
 +4 Mami
 +003 Zaza
 +01 Nani
 +</​code>​
 +===ajouter une ligne===
 +<code user>
 +echo 01 Nani >> ~/​Essai-text-processing/​users-uniq
 +</​code>​
 +
 +=== Supprimer les doublons===
 +<code user>
 +cat ~/​Essai-text-processing/​users-uniq
 +# Retour:
 +5 Papi
 +1 Toto
 +3 Lili
 +2 Titi
 +4 Mami
 +003 Zaza
 +01 Nani
 +01 Nani
 +</​code>​
 +<​note>​
 +Il faut que les doublons soient consécutifs,​ et que le fichier soit "​trié"​
 +</​note>​
 +<code user>
 +sort ~/​Essai-text-processing/​users-uniq | uniq > ~/​Essai-text-processing/​users-sort-uniq
 +</​code>​
 +===Vérification===
 +<code user>
 +cat ~/​Essai-text-processing/​users-sort-uniq
 +# Retour :
 +003 Zaza
 +01 Nani
 +1 Toto
 +2 Titi
 +3 Lili
 +4 Mami
 +5 Papi
 +</​code>​
  
 =====La commande split ===== =====La commande split =====
 +===Syntaxe ===
 +
 +  split [options] [fichier_entrée [préfixe_sortie]]
 +
 +===Préparation ===
 +Création du fichier "​~/​Essai-text-processing/​liste-fruits"​
 +
 +<code user>
 +cat > ~/​Essai-text-processing/​liste-fruits <<EOF
 +> 1 fraise
 +> 2 abricot
 +> 3 pomme
 +> EOF
 +</​code>​
 +
 +Vérification :
 +
 +<code user>
 +cat ~/​Essai-text-processing/​liste-fruits
 +# Retour:
 +1 fraise
 +2 abricot
 +3 pomme
 +</​code>​
 +===Découpage en taille et répartition en autant de fichiers ===
 +<​note>​
 +  * options de découpage par taille :\\
 +
 +-C : découper par taille maximale\\
 +ex: split -C 5 fichier : découpage en 5 octets\\
 +    ( ou de même split -C 5b)\\
 +   
 +    split -C 5k fichier : découpage en 5 kilo-octets\\
 +    split -C 5m fichier : découpage en 5 mega-octets\\
 +-b : découper par 1 taille précise\\
 +Ex: split -b 5 fichier) => tous les fichiers créés par découpage auront cette taille (sauf peut-être le dernier)
 +
 +  * Remarque:\\
 +     Il faut 8 bits pour faire 1 byte (1 octet)
 +       - bit : c'est **Bi**naryDigi**T** : un bit est un chiffre binaire, la valeur d'un bit, c'est 0 ou 1.
 +       - byte : terme anglais pour octet. L'​ordinaire calcule sur un ou plusieurs byte.
 +</​note>​
 +
 +  * exemple de découpage par taille d'un octet avec le préfixe "​fruit1b"​
 +
 +<code user>
 +split -C 1b ~/​Essai-text-processing/​liste-fruits fruit1b
 +</​code>​
 +Le fichier n'est pas lourd et le découpage en taille de 1 byte (=octet) ne le découpe pas : 
 +<code user>
 +ls fruit1b*
 +# Retour
 +fruit1baa
 +</​code>​
 +
 +Un seul fichier a été créé :  ​
 +<code user>
 +cat fruit1b*
 +# Retour :
 +1 fraise
 +2 abricot
 +3 pomme
 +</​code>​
 +Et le fichier et créé dans le répertoire dans lequel le terminal est ouvert.\
 +Pour que le fichier créé lors du découpage soit dans le répertoire du fichier à découper :
 +
 +<code user>
 +split -C 1b ~/​Essai-text-processing/​liste-fruits fruit1b && mv fruit1b* ~/​Essai-text-processing/​
 +#puis 
 +ls ~/​Essai-text-processing/​fruit1b*
 +# Retour:
 +/​home/​hypathie/​Essai-text-processing/​fruit1baa
 +</​code>​
 +Ou
 +<code user>
 +cd Essai-text-processing/​
 +# puis:
 +split -C 1b ~/​Essai-text-processing/​liste-fruits fruit1b
 +# puis :
 +ls fruit1b*
 +fruit1baa
 +</​code>​
 +
 +===Découpage par ligne ===
 +<​note>​
 +  * option de découpage par ligne qui détermine le découpage :\\
 +    -l : pour indiquer le nombre de ligne\\
 +
 +  * Remarque :\\
 +     Sans indication de préfixe, par défaut les fichiers créés par le découpage porte le préfixe x??
 +</​note>​
 +
 +<code user>
 +cd Essai-text-processing/​
 +# puis:
 +split -l 1 ~/​Essai-text-processing/​liste-fruits
 +# puis:
 + ls x*
 +# Retour:
 +xaa  xab  xac
 +# puis:
 + cat x*
 +# Retour :
 +1 fraise
 +2 abricot
 +3 pomme
 +</​code>​
  
-=====La commande nl ===== 
  
  
doc/systeme/commandes/les-commandes-join-paste-split-et-nl.txt · Dernière modification: 06/11/2015 17:57 par paskal

Pied de page des forums

Propulsé par FluxBB