Est-il possible d'utiliser wc pour compter les caractères de chaque ligne au lieu du nombre total de caractères ?
ex.
echo -e foo\nbar\nbazz | grep -i ba
renvoie :
bar
bazz
Alors pourquoi echo -e foo\nbar\nbazz | grep ba | wc -m
renvoie une liste des longueurs de ces mots ? (3 et 4)
Des suggestions ?
P.S. :pourquoi les sauts de ligne sont-ils comptés avec wc -m ? wc -l compte les retours à la ligne, alors pourquoi devrait wc -m les compter aussi ?
Réponse acceptée :
wc compte sur tout le fichier ;
Vous pouvez utiliser awk pour traiter ligne par ligne (sans compter le délimiteur de ligne) :
echo -e "foonbarnbazzn" | grep ba | awk '{print length}'
ou comme awk est principalement un sur-ensemble de grep :
echo -e "foonbarnbazzn" | awk '/ba/ {print length}'
(notez que certains awk les implémentations signalent le nombre d'octets (comme wc -c ) par opposition au nombre de caractères (comme wc -m ) et d'autres compteront les octets qui ne font pas partie des caractères valides en plus des caractères (alors que wc -m les ignorerait dans la plupart des implémentations))