Connaissez-vous un programme similaire pour wc (commande de comptage de mots unix) sous Windows? [fermé]

StackOverflow https://stackoverflow.com/questions/247234

  •  05-07-2019
  •  | 
  •  

Question

Une recherche rapide me donne tawbaware wc , mais n'accepte pas stdout en tant que flux d'entrée, ce qui signifie que je ne peux pas utiliser de pipe dans une session DOS .

Remarque:

Je ne peux pas installer cygwin ni utiliser powershell (ce qui aurait permis un ' | foreach-object {(get-content $ _). count} ')

unxutils et gnuwin32 Les packages peuvent avoir cette fonctionnalité ...

Était-ce utile?

La solution

Vous pouvez utiliser l'original "wc", construit pour Windows: il fait partie de coreutils package. Procurez-vous la la plus récente des ex. Coreutils .

Autres conseils

Encore plus facile, find / c . ex:

netstat -an | find /c "ESTABLISHED"
  

find / c : affiche uniquement le nombre de lignes contenant la chaîne.

Pour les outils Unix sous Windows, vos options sont les suivantes:

msys - similaire à unixtools, à l'origine, quelques outils de construction nécessaires à l'utilisation de mingw (version native) de gcc), a maintenant presque tous les outils de cygwin

cygwin - à peu près tous les signes pour unix, l'installation complexe et nécessite une DLL pour fournir un api Unix. Des problèmes peuvent survenir lors du mélange d’outils construits avec différentes versions de cygwin.dll

Unixtools - tous les outils fournis par cygwin mais compilés de manière native

ch - à peu près tous les outils Unix, compilés en natif. Et un shell qui comprend un interprète 'c'. La version standard est gratuite (bière) mais pas open source.

uwin - libre d'ATT, inclut le korn shell si vous comme ce genre de chose.

mks , un port commercial des outils Unix. Plutôt cher vu les versions gratuites disponibles.

Essayez:

find /c /v "~any string that will never occur~"

Cette commande donne le nombre total de lignes que NE PAS contenir la chaîne de recherche. En le testant, je vois un problème: il ne semble pas y avoir de lignes vierges à la fin d’un fichier.

Eh bien, je suis désolé de ne pas être d'accord, mais les unxutils ont un wc.exe

Essayez!

A bientôt,

Mon pack unxutils contient le nombre de mots suivants:

  

C: \ Java \ vssWorkspace \ java \ portlets_core > wc   -l C: \ Utilisateurs \ malp \ AppData \ Local \ Temp__portlets41366.html   79717   C: \ Utilisateurs \ malp \ AppData \ Local \ Temp__portlets41366.html

En outre, la page unxutils indique que wc.exe est disponible. Recherchez-vous quelque chose que wc.exe ne gère pas?

Voici deux autres manières (de Windows CMD pur) de compter les lignes dans un journal git:

set n=0
for /f %a in ('git log --oneline') do set /a n=n+1

Ou:

git log --online | find /v /c ""

L’avantage du premier est que vous vous retrouvez avec la valeur d’une variable d’environnement avec laquelle vous pouvez travailler. Mais cela peut être lent avec de gros fichiers.

Il existe également WinXs 4.2 , un shareware pour vous permettre pourrait voir si ça va faire ce que vous avez besoin de.

Pourriez-vous installer un langage de script pour cela? C'est peut-être exagéré, mais si le travail est fait avec un minimum de tracas ...

getgnuwin32 facilite le téléchargement et l'installation de gnuwin32 (qui a certainement un utilitaire de wc ).

J'ai trouvé ce fil et j'ai été séduit par les solutions innovantes permettant d'émuler wc en utilisant uniquement les outils intégrés à Windows. Cela a permis de répondre à mon besoin de nombre de caractères afin de pouvoir triompher dans mon combat avec un formulaire Web. avertissement maximum de caractère du champ.

Si vous souhaitez que wc -c donne un nombre d'octets, vous pouvez utiliser DEBUG , un utilitaire DOS (non répertorié par la commande HELP) dans Windows. Le nombre de caractères doit être égal au nombre d'octets moins le nombre de lignes multiplié par la taille d'une nouvelle ligne, ce qui correspond à un caractère de nouvelle ligne pour Unix ('\ n') ou à deux caractères, retour chariot + saut de ligne ('\ cr' et '\ lf' ou ' \ 0Dh '' 0Ah 'pour un fichier de texte brut DOS.

Nombre de caractères = Nombre d'octets - (Nombre de lignes * sizeof ("\ n"))

Pour ce faire, ouvrez une fenêtre de ligne de commande (Démarrer- > Exécuter- > Ouvrir: & cm; ")), lancez le débogage sur le fichier en texte brut et examinez le registre CX contenant la longueur du fichier chargé:

  

Debug [nom du chemin]   -rcx   CX [longueur du fichier en hexadécimal]   :   -q

Puis lancez la recherche sur le fichier:

  

find / v / c "notlikelystring"   ---------- [chemin]: [nombre de lignes]

Et appliquez la formule.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top