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

Ceci est une ancienne révision du document !


Les commandes : d'autres commandes pour la gestion des fichiers-texte

Nota :

Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !

Introduction

la commande fmt

Syntaxe

fmt [options] [fichier...]

préparation

Création du fichier “~/Essai-text-processing/essai-fmt”

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

Affichage du contenu d'un fichier en respectant les mots

  • L'affichage avec la commande “cat” est parfois difficile à lire:
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 !
  • Affichage avec la commande “fmt” :
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 !
Par défaut, la commande “fmt” affiche le contenu d'un fichier par ligne de 75 caractères maximum.

Options utiles

  • -w : pour indiquer le nombre de caractère par ligne
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 !

Combiner fmt et less pour encore plus de lisibilité

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)

La commande nl

Permet de numéroter l'affichage d'un fichier.

Syntaxe

nl [options] [fichier...]

Préparation

  • copie du fichier ~/.bashrc et visualisation :
cat ~/.bashrc >> ~/Essai-text-processing/bashrc-bis
  • comparons avec l'affichage de less
less ~/Essai-text-processing/bashrc-bis

Extrait du retour :

# ~/.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

Extrait du retour :

     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
       
[...]
Par défaut la commande ln numérote les lignes non-vides.\
  • Quelques options :
    1. b : numérotation des lignes vides
    2. b -t[expression régulière] : affiche tout mais numérote les lignes qui correspondent à l'expression régulière
  • voir man nl pour plus d'explication.

</note =====La commande join ===== ===Syntaxe de la commande join ===

join [options]... fichier1 fichier2

===Préparation=== Soit deux fichiers : “users” et “infos-users”

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

===Fusion de ces deux fichiers ===

join -1 1 -2 2 ~/Essai-text-processing/users ~/Essai-text-processing/infos-users
  • 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 :

01 Toto toto@gmail.com
02 Titi titi@gmx.fr
03 Lili lili@hotmail.com
Pour fusionner des fichiers qui ont en commun “:“\ join -t':' -2 1 -2 2 fichier1 fichier2

=== concaténation de la fusion dans un fichier===

join -1 1 -2 2 ~/Essai-text-processing/users ~/Essai-text-processing/infos-users > ~/Essai-text-processing/adr-users

===vérification ===

cat ~/Essai-text-processing/adr-users
01 Toto toto@gmail.com
02 Titi titi@gmx.fr
03 Lili lili@hotmail.com

=====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”

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

===Regroupement des lignes des deux fichiers === Retour:

paste ~/Essai-text-processing/users ~/Essai-text-processing/infos-users

Retour :

01 Toto	toto@gmail.com 01
02 Titi	titi@gmx.fr 02
03 Lili	lili@hotmail.com 03

===Concaténation du retour dans un fichier “paste-users-infos” qui sera créé===

paste ~/Essai-text-processing/users ~/Essai-text-processing/infos-users > ~/Essai-text-processing/paste-users-infos

=== Vérification ===

01 Toto	toto@gmail.com 01
02 Titi	titi@gmx.fr 02
03 Lili	lili@hotmail.com 03

===== sort ===== ===Syntaxe===

sort [options [+POS1] [-POS2]] [fichier...]

===Préparation===

Soit le fichier ”~/Essai-text-processing/users.sort”

cat ~/Essai-text-processing/users.sort
# Retour
5 Papi
1 Toto
3 Lili
2 Titi
4 Mami
003 Zaza
01 Nani

=== tri par défaut===

sort ~/Essai-text-processing/users.sort
# Retour :
003 Zaza
01 Nani
1 Toto
2 Titi
3 Lili
4 Mami
5 Papi

===Tri alphabétique d'une simple colonne===

cat ~/Essai-text-processing/sort.abc
# Retour:
tomate
fraise
abricot
ananas
kiwi
pomme
sort ~/Essai-text-processing/sort.abc
# Retour:
abricot
ananas
fraise
kiwi
pomme
tomate

===Tri avec choix de colonne ===

cat ~/Essai-text-processing/sort.abc
# Retour :
tomate:4
fraise:1
abricot:2
ananas:6
kiwi:5
pomme:3
sort -t':' -k 2n ~/Essai-text-processing/sort.abc
fraise:1
abricot:2
pomme:3
tomate:4
kiwi:5
ananas:6
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

===Tri selon plusieurs colonnes ===

cat ~/Essai-text-processing/sort.123abc
# Retour:
tomate:x:c
fraise:1
abricot:2
ananas:x:b
kiwi:x:a
pomme:3
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

=== concaténer et créer un fichier avec la résultat===

sort -t':' -k 2n -k 3d ~/Essai-text-processing/sort.123abc > ~/Essai-text-processing/sort.123abc.ok

===Vérifier ===

cat ~/Essai-text-processing/sort.123abc.okkiwi:x:a
# Retour :
ananas:x:b
tomate:x:c
fraise:1
abricot:2
pomme:3

=====la commande tr ===== Elle permet de traduire, c'est-à-dire, changer des lettres ===Syntaxe ===

tr [options] ens1 ens2

===Exemples ===

cat ~/Essai-text-processing/tr-essai
# retour:
Pierre Paul Jacques
tr P p  < ~/Essai-text-processing/tr-essai
pierre paul Jacques
cat ~/Essai-text-processing/tr-essai
# retour:
Pierre Paul Jacques
tr P X  < ~/Essai-text-processing/tr-essai
Xierre Xaul Jacques
cat ~/Essai-text-processing/tr-essai
# retour :
Pierre Paul Jacques
tr PJ pj < ~/Essai-text-processing/tr-essai
pierre paul jacques

=====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 ===

cat ~/Essai-text-processing/users-uniq
# Retour:
Papi
1 Toto
3 Lili
2 Titi
4 Mami
003 Zaza
01 Nani

===ajouter une ligne===

echo 01 Nani >> ~/Essai-text-processing/users-uniq

=== Supprimer les doublons===

cat ~/Essai-text-processing/users-uniq
# Retour:
5 Papi
1 Toto
3 Lili
2 Titi
4 Mami
003 Zaza
01 Nani
01 Nani
Il faut que les doublons soient consécutifs, et que le fichier soit “trié”
sort ~/Essai-text-processing/users-uniq | uniq > ~/Essai-text-processing/users-sort-uniq

===Vérification===

cat ~/Essai-text-processing/users-sort-uniq
# Retour :
003 Zaza
01 Nani
1 Toto
2 Titi
3 Lili
4 Mami
5 Papi

=====La commande split ===== ===Syntaxe ===

split [options] [fichier_entrée [préfixe_sortie]]

===Préparation === Création du fichier “~/Essai-text-processing/liste-fruits”

cat > ~/Essai-text-processing/liste-fruits <<EOF
> 1 fraise
> 2 abricot
> 3 pomme
> EOF

Vérification :

cat ~/Essai-text-processing/liste-fruits
# Retour:
1 fraise
2 abricot
3 pomme

===Découpage en taille et répartition en autant de fichiers ===

  • 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)

  1. bit : c'est BinaryDigiT : un bit est un chiffre binaire, la valeur d'un bit, c'est 0 ou 1.
  2. byte : terme anglais pour octet. L'ordinaire calcule sur un ou plusieurs byte.
  • exemple de découpage par taille d'un octet avec le préfixe “fruit1b”
split -C 1b ~/Essai-text-processing/liste-fruits fruit1b

Le fichier n'est pas lourd et le découpage en taille de 1 byte (=octet) ne le découpe pas :

ls fruit1b*
# Retour
fruit1baa

Un seul fichier a été créé :

cat fruit1b*
# Retour :
1 fraise
2 abricot
3 pomme

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 :

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

Ou

cd Essai-text-processing/
# puis:
split -C 1b ~/Essai-text-processing/liste-fruits fruit1b
# puis :
ls fruit1b*
fruit1baa

===Découpage par ligne ===

  • option de découpage par ligne qui détermine le découpage :
    1. 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??

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
1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
doc/systeme/commandes/les-commandes-join-paste-split-et-nl.1402209538.txt.gz · Dernière modification: 08/06/2014 08:38 par Hypathie

Pied de page des forums

Propulsé par FluxBB