Afficher les lignes une par une
PiLoTe
-
zipe31 Messages postés 34620 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 34620 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, j' ai ecris ce programme et je ne comprend pas pourquoi une érreur (ligne 10: 100]: Aucun fichier ou dossier de ce type) apparait.
je voudrai afficher les 100 premières lignes d'un fichier sans utiliser cat ou autre.
je voudrai afficher les 100 premières lignes d'un fichier sans utiliser cat ou autre.
#!/bin/bash a=$(wc $1) lines=$(echo $a|cut -d' ' -f1) words=$(echo $a|cut -d' ' -f2) chars=$(echo $a|cut -d' ' -f3) i=0 while [$i < 100] do sed -n "$i p" $1 i++ done echo "il y a $lines de lignes"
Configuration: Linux / Chrome 83.0.4103.106
3 réponses
-
Salut,
Il faut des espaces autour des crochets.
-
< et >
ne s'appliquent qu'à des chaînes de caractères.
Pour les chiffres il faut employer-eq, -ne, -lt, -le, -gt ou -ge
sed n'aime pas la valeur "0" il faut déclarer ta variable $i à 1.
Pour incrémenter une variable :((i++))
Pour info :
$ wc test.txt
244 1566 34082 test.txt
$ wc -l < test.txt
244
$ wc -m < test.txt
34082
$ wc -w < test.txt
1566
Sinon, cette commande fait la même chose que ce qu'est censé faire ton script :sed -n '1,100p' ton_fichier && echo "Il y a $(wc -l < ton_fichier) lignes."
-
-
-
Re-
je voudrai afficher les 100 premières lignes d'un fichier sans utiliser cat ou autre.
Donc en shell pur ;-)
Fichier de 100 lignes (ici je n'affiche que les 5 premières et dernières lignes du fichier) :$ head -5 f1 && echo "[…]" && tail -5 f1
ligne 1
ligne 2
ligne 3
ligne 4
ligne 5
[…]
ligne 96
ligne 97
ligne 98
ligne 99
ligne 100
Le script (qui n'affiche que les 10 premières lignes) :$ cat bar.sh
#!/bin/bash
mapfile -t tableau < $1
for (( i=0 ; i < 10 ; i++ ))
do
echo "${tableau[$i]}"
done
echo "il y a ${#tableau[@]} lignes"
L'exécution :$ ./bar.sh f1
ligne 1
ligne 2
ligne 3
ligne 4
ligne 5
ligne 6
ligne 7
ligne 8
ligne 9
ligne 10
il y a 100 lignes
;-))