Знаете ли вы похожую программу для wc (команда подсчета слов в unix) в Windows?

Быстрый поиск дает мне tawbaware wc, но он не принимает stdout в качестве входного потока, то есть я могу не использовать канал в сеансе DOS.

Примечание.

Я не могу установить cygwin или использовать powershell (что позволило бы '|foreach-object {(get-content $_).count}')

unxutils и gnuwin32 Пакеты могут иметь эту функцию ...


person VonC    schedule 29.10.2008    source источник
comment
wc находится в coreutils (часть дистрибутива gnuwin32, с которым вы связались).   -  person florin    schedule 29.10.2008


Ответы (10)


Вы можете использовать оригинальный wc, созданный для Windows: он является частью coreutils упаковка. Получите последнюю версию coreutils exe.

person florin    schedule 29.10.2008
comment
загрузка сейчас, но быстрый (слишком быстрый) обзор страницы gnuwin32.sourceforge.net/packages.html не позволил мне поверить, что wc был включен в этот дистрибутив ... - person VonC; 29.10.2008
comment
установлен и используется с |, Он работает (при наличии libiconv2.dll и libintl3.dll). Спасибо! - person VonC; 29.10.2008

Еще проще, find /c. бывший:

netstat -an | find /c "ESTABLISHED"

find /c: отображает только количество строк, содержащих строку.

person jeff drake    schedule 27.01.2011
comment
Интересное использование find там. +1 - person VonC; 27.01.2011
comment
очень полезно - руководство здесь не одобрит установку этих инструментов, отличных от Windows, без большого количества одобрения, так что все, что позволяет нам использовать то, что уже является частью Windows, прекрасно. - person mike; 31.07.2012

Для инструментов unix в Windows доступны следующие варианты:

msys - аналогично unixtools, изначально было всего несколько инструментов сборки, необходимых для работы с mingw (собственная версия gcc) , теперь есть почти все инструменты cygwin

cygwin - почти все для unix, сложной установки и требует dll для предоставления unix api. Могут возникнуть проблемы при смешивании инструментов, созданных с использованием разных версий cygwin.dll

Unixtools - не все инструменты, предоставляемые cygwin, но скомпилированные изначально

ch - почти все инструменты unix, скомпилированные изначально. И оболочка, которая включает интерпретатор 'c'. Стандартная версия бесплатна (пиво), но не с открытым исходным кодом.

uwin - бесплатно от ATT, включает оболочку korn, если вам нравится такой вид вещи.

mks Коммерческий порт инструментов unix. Довольно дорого, учитывая доступные бесплатные версии.

person Martin Beckett    schedule 29.10.2008
comment
Спасибо за этот список. Я обязательно обращусь к нему для любого будущего подобного запроса. +1 - person VonC; 29.10.2008

Пытаться:

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

Эта команда подсчитывает количество всех строк, которые НЕ содержат строку поиска. При тестировании я вижу проблему в том, что он не считает пустые строки в конце файла.

person Dan S.    schedule 04.12.2010

Что ж, извините, что не согласен, но в unxutils действительно есть wc.exe

Попробуйте!

Ваше здоровье,

person Vinzz    schedule 29.10.2008
comment
вы правы, мои первоначальные поиски были слишком быстрыми. +1 но я пойду с coreutils - person VonC; 29.10.2008

В моем пакете unxutils есть подсчет слов:

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

Кроме того, на странице unxutils указано, что wc.exe доступен. Вы ищете что-то, с чем wc.exe не справляется?

person Miguel Ping    schedule 29.10.2008
comment
вы правы, мои первоначальные поиски были слишком быстрыми. +1 но я пойду с coreutils - person VonC; 29.10.2008

Вот два других (чистых Windows CMD) способа подсчета строк в журнале git:

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

Or:

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

Преимущество первого состоит в том, что вы получаете значение переменной среды, с которой можете что-то делать. Но с огромными файлами он может работать медленно.

person Community    schedule 25.09.2012
comment
Да, это интересно, но не совсем ответ на исходный вопрос. - Вероятно, это должен быть комментарий к ответу @jeffdrake. Ограничение репутации при комментировании может быть головной болью ... - вещь, которая чувствует боль ...;) - person I'm with Monica; 26.09.2012

Также существует WinXs 4.2, это условно-бесплатная программа, так что вы можете проверить, есть ли он сделает то, что вам нужно.

Не могли бы вы установить для этого язык сценария? Это может быть излишним, но если он выполняет свою работу с минимумом суеты ...

person Community    schedule 29.10.2008
comment
интересно, но не бесплатно. Что касается языка сценариев, время запуска слишком медленное по сравнению с одним wc.exe (у нас есть ПК 5-6 лет ... ;-)) - person VonC; 29.10.2008

Я нашел эту ветку и был очарован инновационными решениями для эмуляции wc с использованием только встроенных в Windows инструментов. Это стимулировало ответ на мою потребность в подсчете символов, чтобы я мог победить в своей битве с максимальным символом поля веб-формы предупреждение.

Если вам нужен wc -c, который дает счетчик байтов, вы можете использовать DEBUG, служебную программу DOS (которая не указана командой HELP) в Windows. Количество символов должно равняться количеству байтов минус количество строк, умноженное на размер новой строки, которая представляет собой один символ новой строки для Unix ('\ n') или два символа, возврат каретки + перевод строки ('\ cr' и '\ lf' или ' \ 0Dh '' 0Ah 'для обычного текстового файла DOS.

Количество символов = Количество байтов - (Количество строк * sizeof ("\ n"))

Для этого откройте окно командной строки (Пуск-> Выполнить-> Открыть: "cmd"), запустите отладку в текстовом файле и проверьте регистр CX, который содержит длину загруженного файла:

Отладка [путь] -rcx CX [длина файла в шестнадцатеричном формате]: -q

Затем запустите find в файле:

find / v / c "notlikelystring" ---------- [путь]: [количество строк]

И примените формулу.

person Community    schedule 04.08.2012

getgnuwin32 упрощает загрузку и установку gnuwin32 (в котором, безусловно, есть утилита wc).

person jfs    schedule 29.10.2008