GNU/Linux >> Tutoriels Linux >  >> Linux

Compter les caractères de chaque ligne avec Wc ?

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


Linux
  1. Travailler avec des flux de données sur la ligne de commande Linux

  2. Manipulation de texte en ligne de commande avec sed

  3. Multi-tâches en ligne de commande avec screenie

  4. Comment insérer du texte au début de chaque ligne dans Vim

  5. Comment afficher différemment les caractères de contrôle (^c, ^d, ^[, …) dans le shell ?

Résoudre un puzzle en ligne de commande Linux avec nudoku

Conseils pour lister les fichiers avec ls sur la ligne de commande Linux

Manipuler du texte en ligne de commande avec grep

Suivi du temps avec Timewarrior en ligne de commande

Utilisation de la commande tr sous Linux pour jouer avec des personnages

Comment contrôler la version avec Git sur la ligne de commande