7 votes

Nombre de mots de chaque ligne dans un script.

Je dois écrire un script pour lire chaque ligne en utilisant une boucle while et compter le nombre de mots dans chaque ligne. Jusqu'à présent, je peux obtenir le nombre total de lignes et le texte de chacune sur sa propre ligne. J'ai des difficultés à utiliser la commande wc -w pour compter le nombre de mots de chaque ligne et l'afficher. Lorsque je le place sur la même ligne que l'instruction printf, le compte est inexact. Je dois envoyer la tuile de texte au script pour qu'il compte les mots, par exemple : cat file.txt | word_count.sh

Des suggestions ?

code :

#!/bin/bash
line_num=1

while read line;do
  printf "line $line_num: $line"
  ((line_num++))
done

les résultats :

cat imagine.txt | word_counts.sh 
line1: magine there's no countries 
line2: It isn't hard to do 
line3: Nothing to kill or die for 
line4: And no religion too 
line5: Imagine all the people living life in peace

8voto

SiegeX Points 32614

Si vous voulez impressionner au risque de vous faire prendre pour plagiat :

 awk '$0="line"NR": "NF' imagine.txt

4voto

John Zwinck Points 43636
printf "$line_num: $(echo $line | wc -w)"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X