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))