Как считать строки в документе?
У меня есть такие строки, и я хочу знать, сколько строк у меня на самом деле...
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?
19 ответов
использовать wc
:
wc -l <filename>
это выведет количество строк в <filename>
:
$ wc -l /dir/file.txt
3272485 /dir/file.txt
или, чтобы пропустить <filename>
от результата использования wc -l < <filename>
:
$ wc -l < /dir/file.txt
3272485
вы также можете передавать данные в wc
а также:
$ cat /dir/file.txt | wc -l
3272485
$ curl yahoo.com --silent | wc -l
63
для подсчета всех строк использовать:
$ wc -l file
для фильтрации и подсчета только строк с использованием шаблона:
$ grep -w "pattern" -c file
или используйте -v для инвертирования матча:
$ grep -w "pattern" -c -v file
см. справочную страницу grep, чтобы взглянуть на-e,- i и-x args...
есть много способов. используя wc
один.
wc -l file
другие включают
awk 'END{print NR}' file
sed -n '$=' file
(GNU sed)
grep -c ".*" file
инструмент wc
является "счетчиком слов" в UNIX и UNIX-подобных операционных системах, вы также можете использовать его для подсчета строк в файле, добавив , Так что wc -l foo
будет подсчитывать количество строк в foo
. Вы также можете передать вывод из такой программы:ls -l | wc -l
, который скажет вам, сколько файлов в текущем каталоге.
Если вы хотите проверить общую строку всех файлов в каталоге, вы можете использовать find и wc:
find . -type f -exec wc -l {} +
Если все, что вам нужно, это количество строк (а не количество строк и глупое имя файла):
wc -l < /filepath/filename.ext
Как упоминалось ранее, они также работают (но уступают по другим причинам):
awk 'END{print NR}' file # not on all unixes
sed -n '$=' file # (GNU sed) also not on all unixes
grep -c ".*" file # overkill and probably also slower
использовать nl
такой:
nl filename
С man nl
:
запишите каждый файл в стандартный вывод с добавлением номеров строк. С нет файла, или когда файл -, прочитайте стандартный ввод.
Я использую этот:
cat myfile.txt | wc -l
Я предпочитаю его принятому ответу, потому что он не печатает имя файла, и вам не нужно использовать awk
исправить. Принятый ответ:
wc -l myfile.txt
но я думаю, что лучшим является ответ GGB667:
wc -l < myfile.txt
Я, вероятно, буду использовать это с этого момента. Это немного короче, чем мой способ. Я использую свой старый способ сделать это на случай, если кто-то предпочтет это. Выход такой же с помощью этих двух методов.
выше являются предпочтительным методом, но команда" cat " также может быть полезна:
cat -n <filename>
покажет вам все содержимое файла с номерами строк.
Я видел этот вопрос, когда искал способ подсчета нескольких строк файлов, поэтому, если вы хотите подсчитать несколько строк файла a .txt файл вы можете сделать это,
cat *.txt | wc -l
Он также будет работать на одном .txt файл ;)
Redirection / Piping вывод файла на wc -l
должно быть достаточно, например:
cat /etc/fstab | wc -l
который затем предоставит нет. только линий.
Я только что сделал программу для этого (с node
)
npm install gimme-lines
gimme-lines verbose --exclude=node_modules,public,vendor --exclude_extensions=html
Я знаю, что это старый но все же: количество отфильтрованных строк
мой файл выглядит так:
Number of files sent
Company 1 file: foo.pdf OK
Company 1 file: foo.csv OK
Company 1 file: foo.msg OK
Company 2 file: foo.pdf OK
Company 2 file: foo.csv OK
Company 2 file: foo.msg Error
Company 3 file: foo.pdf OK
Company 3 file: foo.csv OK
Company 3 file: foo.msg Error
Company 4 file: foo.pdf OK
Company 4 file: foo.csv OK
Company 4 file: foo.msg Error
Если я хочу знать, сколько файлов отправляется OK:
grep "OK" <filename> | wc -l
или
grep -c "OK" filename
как wc -l
является лучшим решением, но для дальнейшего использования вы можете использовать Perl:
perl -lne 'END { print $. }'
$.
содержит номер строки и END
блок будет выполняться в конце сценария.
или подсчитайте все строки в подкаталогах с шаблоном имени файла (например, файлы журналов с метками времени в имени файла):
wc -l ./**/*_SuccessLog.csv