Numéroter un texte avec script shell

Fermé
pato1989 - 8 avril 2012 à 21:33
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 - 13 août 2014 à 11:04
Bonjour,

Je souhaite numéroter afficher le contenue d'un fichier texte
de manière de créer un script équivalent à la commande "cat -n fic.txt"
j'ai essayé ce code mais ça marche pas

echo donner le nom de fichier
read a
i=0
echo $i
b=cat $a|wc -l
while [ i le $b ]
do
i=$(($i+1))
echo $i
head -$i $a|tail -1
done


A voir également:

1 réponse

Bonjour,

Je vous propose cette solution :

#! /bin/bash

cpt=1
while read line
do
        echo $line | sed "s/${line}/     ${cpt}  ${line}/"
        (( cpt++ ))
done < toto.txt


Voici le résultat :
1  TEST FILE
2  HELLO
3  WORLD


On remplace tout simplement la ligne par le numéro + la ligne grâce à la commande sed. On incrémente le numéro de ligne dans la boucle de lecture.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
12 août 2014 à 17:41
Salut,

sed "s/^/ ${cpt}  /" <<<"${line}"
Sera tout aussi bien en lieu et place de la ligne 6 ;-))
0
gnugo Messages postés 145 Date d'inscription lundi 6 septembre 2010 Statut Membre Dernière intervention 8 décembre 2014 46
12 août 2014 à 17:56
Je ne réponds pas à la question mais si "cat -n fic.txt" le fait, pourquoi chercher à le faire autrement ?

là on remplace un appel à cat par des appels à sed je vois pas l'intérêt. Et ton exemple fait encore plus d'appels : wc, head, tail et même cat


#!/bin/bash
cat -n fic.txt
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
12 août 2014 à 18:01
Je n'ai corrigé que la syntaxe sed pour la forme, mais il est vrai qu'un simple :
echo  "${cpt} ${line}"
est largement suffisant et fait largement le boulot ;-\
0
C'est vrai merci pour la correction ;)

Je ne vois pas non plus l'intérêt de remplacer une commande système par un script mais bon ... Peut être un exercice ....
0
gnugo Messages postés 145 Date d'inscription lundi 6 septembre 2010 Statut Membre Dernière intervention 8 décembre 2014 46
13 août 2014 à 10:42
Bah si on réécrit la commande même en partie, dans ce cas l'appel à d'autres commandes hormis celles de base de bash devraient être interdites ! Sinon #!/bin/bash
cat -n fic.txt est correct
0