2012-02-02 17 views
5

Devo scrivere uno script per leggere ogni riga utilizzando un ciclo while e contare il numero di parole in ogni riga. Finora posso ottenere il numero totale di righe e il testo per ognuno sulla propria linea. Sto riscontrando problemi nell'usare il comando wc -w per contare il numero di parole per ogni riga e visualizzarlo. quando lo metto sulla stessa riga dell'affermazione printf dà un conteggio inesatto. Devo canalizzare la tessera di testo nello script in modo che conti le parole, ad esempio: cat file.txt | word_count.shconteggio parole di ogni riga in uno script

qualche suggerimento?

codice:

#!/bin/bash 
line_num=1 

while read line;do 

printf "line $line_num: $line" 

((line_num++)) 

done 

risultati:

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 

risposta

4
printf "$line_num: $(echo $line | wc -w)" 
+0

Grazie mille quello ha funzionato perfettamente, non sapevo che dovevo echeggiare la linea e mettere() attorno ad esso. –

4

nel caso si voglia far colpo con il rischio di essere scoperti per plagio:

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