У меня есть такие строки, и я хочу знать, сколько строк у меня на самом деле ...
09:16:39 AM all 2.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 94.00
09:16:40 AM all 5.00 0.00 0.00 4.00 0.00 0.00 0.00 0.00 91.00
09:16:41 AM all 0.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 96.00
09:16:42 AM all 3.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 96.00
09:16:43 AM all 0.00 0.00 1.00 0.00 1.00 0.00 0.00 0.00 98.00
09:16:44 AM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
09:16:45 AM all 2.00 0.00 6.00 0.00 0.00 0.00 0.00 0.00 92.00
Есть ли способ подсчитать их все с помощью команд Linux?
linux
bash
command-line
scripting
Alucard
источник
источник
g <Ctrl-g>
, он покажет вам количество строк, слов, столбцов и байтов<esc> :q!
это единственный ответ. (Это шутка, она удалит все несохраненные изменения - шутка в том, что если вы не знаете vim, то легко испортить файл, поэтому лучше не сохранять его).Ответы:
Используйте
wc
:Это выведет количество строк в
<filename>
:Или, чтобы исключить
<filename>
из результата использованияwc -l < <filename>
:Вы также можете передать данные в
wc
:источник
wc -l <file> | awk '{print $1}
wc -l < <filename>
cat <file> | wc -l
watch wc -l <filename>
вы можете следить за этим файлом в режиме реального времени. Это полезно для файлов журнала, например.Для подсчета всех строк используйте:
Для фильтрации и подсчета только строк с использованием шаблона:
Или используйте -v, чтобы инвертировать совпадение:
Смотрите страницу руководства grep, чтобы взглянуть на аргументы -e, -i и -x ...
источник
grep -c
работает лучше для меня. Главным образом из-заwc -l
надоедливого префикса пробела.Или
источник
Есть много способов. использование
wc
один.wc -l file
другие включают
awk 'END{print NR}' file
sed -n '$=' file
(GNU sed)источник
wc -l file
дает вам количество строк И имя файла, чтобы получить только имя файла, которое вы можете сделать:filename.wc -l < /filepath/filename.ext
grep -Hc ".*" file
wc -l
считает символы новой строки, а не фактические строки в файле. Все остальные команды, включенные в этот ответ, дадут вам правильный номер, если вам нужны строки.Этот инструмент
wc
является «счетчиком слов» в UNIX и UNIX-подобных операционных системах, но вы также можете использовать его для подсчета строк в файле, добавив эту-l
опцию.wc -l foo
будет считать количество строк вfoo
. Вы также можетеls -l | wc -l
передать вывод из программы, подобной этой:, которая скажет вам, сколько файлов находится в текущем каталоге (плюс один).источник
ls -l | wc -l
на самом деле даст вам количество файлов в каталоге +1 для общего размера строки. Вы можете сделать,ls -ld * | wc -l
чтобы получить правильное количество файлов.Если вы хотите проверить общую строку всех файлов в каталоге, вы можете использовать find и wc:
источник
Используйте
wc
:источник
Если вам нужно только количество строк (а не количество строк и глупое имя файла, которое возвращается):
Как упоминалось ранее, они также работают (но уступают по другим причинам):
источник
Используйте
nl
как это:От
man nl
:источник
wc -l
отображается как 0. Спасибо.Я использовал это:
Я предпочитаю его принятому ответу, потому что он не печатает имя файла, и вам не нужно его использовать,
awk
чтобы это исправить. Принятый ответ:wc -l myfile.txt
Но я думаю, что лучший ответ GGB667:
wc -l < myfile.txt
Я, вероятно, буду использовать это с этого момента. Это немного короче, чем я. Я придерживаюсь своего старого способа сделать это в случае, если кто-то предпочитает это. Вывод одинаков с этими двумя методами.
источник
Выше приведен предпочтительный метод, но команда «cat» также может быть полезна:
Покажет вам все содержимое файла с номерами строк.
источник
Я видел этот вопрос, когда искал способ подсчета нескольких строк в файлах, поэтому, если вы хотите подсчитать несколько строк в файле .txt, вы можете сделать это,
он также будет работать на одном файле .txt;)
источник
wc -l
не считает строки.Да, этот ответ может быть немного опоздал на вечеринку, но я пока не нашел никого, кто документировал бы более надежное решение в ответах.
Вопреки распространенному мнению, POSIX вообще не требует, чтобы файлы заканчивались символом новой строки. Да, определение строки POSIX 3.206 выглядит следующим образом:
Однако многие люди не знают, что POSIX также определяет POSIX 3.195 Incomplete Line как:
Следовательно, файлы без трейлинга
LF
идеально совместимы с POSIX.Если вы решите не поддерживать оба типа EOF, ваша программа не будет POSIX-совместимой.
В качестве примера, давайте посмотрим на следующий файл.
Независимо от EOF, я уверен, что вы согласитесь, что есть две линии. Вы поняли это, посмотрев, сколько строк было запущено, а не посмотрев, сколько строк было завершено. Другими словами, согласно POSIX, эти два файла имеют одинаковое количество строк:
Страница
wc
справочника относительно ясна о подсчете новых строк, при этом новая строка является просто0x0a
символом:Следовательно,
wc
даже не пытается посчитать то, что вы могли бы назвать «линией». Использованиеwc
для подсчета строк может очень хорошо привести к ошибочным подсчетам, в зависимости от EOF вашего входного файла.POSIX-совместимое решение
Вы можете использовать
grep
для подсчета строк, как в примере выше. Это решение является более надежным и точным, и оно поддерживает все возможные варианты строки в вашем файле:источник
grep -oE '\d+'
: ТОЛЬКО чтобы вернуть цифры .источник
Возвращает только количество строк
источник
Перенаправление / передача выходного файла файла
wc -l
должно быть достаточно, как показано ниже:который затем предоставит нет. только линий.
источник
Или подсчитайте все строки в подкаталогах с шаблоном имени файла (например, файлы журнала с метками времени в имени файла):
источник
Я знаю, что это старый, но все же: считать отфильтрованные строки
Мой файл выглядит так:
Если я хочу знать, сколько файлов отправлено, хорошо:
ИЛИ
источник
подсчитать количество строк и сохранить результат в переменной, используя эту команду:
count=$(wc -l < file.txt) echo "Number of lines: $count"
источник
Как говорили другие,
wc -l
это лучшее решение, но для дальнейшего использования вы можете использовать Perl:$.
содержит номер строки иEND
блок будет выполнен в конце скрипта.источник
dir | perl -lne 'END { print $. }' Can't find string terminator "'" anywhere before EOF at -e line 1.'
perl -lne '}{ print $. '
делает то же самое.Я только что сделал программу для этого (с
node
)https://github.com/danschumann/gimme-lines/tree/master
источник
wc -l <filename>
Это даст вам количество строк и имя файла в выводе.
Например.
wc -l 24-11-2019-04-33-01-url_creator.log
Вывод
63 24-11-2019-04-33-01-url_creator.log
использование
wc -l <filename>|cut -d\ -f 1
чтобы получить только количество строк в выводе.
Например.
wc -l 24-11-2019-04-33-01-url_creator.log|cut -d\ -f 1
Вывод
63
источник
wc -l < filename
wc -l < filename
отличаетсяwc -l filename
, в первую перенаправлением использует и то нет никакого файла на выходе, как показано в ответ от user85509Эта встроенная функция переносной оболочки [ℹ] работает как шарм. Просто добавьте следующий фрагмент в ваш
.bashrc
файл (или эквивалент для вашей оболочки) .Это должно быть полностью совместимо со всеми POSIX-совместимыми оболочками в дополнение к bash и zsh .
источник