È possibile utilizzare wc per contare i caratteri di ogni riga invece della quantità totale di caratteri?
es.
echo -e foo\nbar\nbazz | grep -i ba
resi:
bar
bazz
Allora perché echo -e foo\nbar\nbazz | grep ba | wc -m
restituire un elenco delle lunghezze di quelle parole? (3 e 4)
Suggerimenti?
PS:perché gli avanzamenti di riga vengono conteggiati con wc -m
? wc -l
conta le nuove righe, quindi perché dovrebbe wc -m
contarli anche tu?
Risposta accettata:
wc
conta sull'intero file;
Puoi usare awk
elaborare riga per riga (senza contare il delimitatore di riga):
echo -e "foonbarnbazzn" | grep ba | awk '{print length}'
o come awk
è principalmente un superset di grep
:
echo -e "foonbarnbazzn" | awk '/ba/ {print length}'
(nota che alcuni awk
le implementazioni riportano il numero di byte (come wc -c
) rispetto al numero di caratteri (come wc -m
) e altri conteranno i byte che non fanno parte di caratteri validi oltre ai caratteri (mentre wc -m
li ignorerebbe nella maggior parte delle implementazioni))