У меня есть строки, подобные этим, и я хочу знать, сколько строк у меня на самом деле...
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?
Используйте 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> | awk '{print $1}
wc -l < <filename>
Чтобы подсчитать все строки, используйте:
$ wc -l file
Чтобы фильтровать и подсчитывать только строки с использованием шаблона:
$ grep -w "pattern" -c file
Или используйте -v для инвертирования соответствия:
$ grep -w "pattern" -c -v file
Посмотрите страницу man grep, чтобы посмотреть на аргументы -e, -i и -x...
grep -c
. Главным образом из-за wc -l
раздражающего префикса пробела «feature».
wc -l <file.txt>
или
command | wc -l
существует много способов. использование wc
является одним.
wc -l file
другие включают
awk 'END{print NR}' file
sed -n '$=' file
(GNU sed)
grep -c ".*" file
wc -l file
дает вам количество строк и имя файла, чтобы получить только имя файла, которое вы можете сделать: filename.wc -l < /filepath/filename.ext
grep -Hc ".*" file
Инструмент wc
является "счетчиком слов" в UNIX и UNIX-подобных операционных системах, вы также можете использовать его для подсчета строк в файле, добавив параметр -l
, поэтому wc -l foo
будет считать количество строк в foo
. Вы также можете выводить вывод из программы следующим образом: ls -l | wc -l
, который расскажет вам, сколько файлов находится в текущем каталоге.
ls -l | wc -l
самом деле даст вам количество файлов в каталоге +1 для строки общего размера. вы можете сделать ls -ld * | wc -l
чтобы получить правильное количество файлов.
Используйте wc
:
wc -l <filename>
Если вы хотите проверить общую строку всех файлов в каталоге, вы можете использовать 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
:
Напишите каждый FILE на стандартный вывод, добавив номера строк. С ни FILE, ни когда FILE -, прочитайте стандартный ввод.
wc -l
сообщает как 0. Спасибо.
Я использовал это:
cat myfile.txt | wc -l
Я предпочитаю его по принятому ответу, потому что он не печатает имя файла, и вам не нужно использовать awk
, чтобы исправить это. Принятый ответ:
wc -l myfile.txt
Но я думаю, что лучший из них - ответ GGB667:
wc -l < myfile.txt
Я, вероятно, буду использовать это с этого момента. Это немного короче моего пути. Я использую свой старый способ сделать это, если кто-то предпочитает это. Результат одинаковый с этими двумя методами.
Я видел этот вопрос, пока искал способ подсчета нескольких строк файлов, поэтому, если вы хотите подсчитать несколько строк файла .txt, вы можете сделать это,
cat *.txt | wc -l
он также будет работать в одном .txt файле;)
wc -l file.txt | cut -f3 -d" "
Возвращает только количество строк
Выше - предпочтительный метод, но команда "cat" также может быть полезной:
cat -n <filename>
Покажет вам весь контент файла с номерами строк.
Перенаправление/Выполнение вывода файла на wc -l
должно быть достаточным, например:
cat /etc/fstab | wc -l
который затем предоставит no. только строк.
cat file.log | wc -l | grep -oE '\d+'
grep -oE '\d+'
: Чтобы вернуть цифры ТОЛЬКО.Я только что сделал программу для этого (с 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
Если я хочу знать, сколько файлов отправлено ОК:
grep "OK" <filename> | wc -l
ИЛИ
grep -c "OK" filename
Как говорили другие, wc -l
- лучшее решение, но для дальнейшего использования вы можете использовать Perl:
perl -lne 'END { print $. }'
$.
содержит номер строки и блок END
будет выполняться в конце script.
dir | perl -lne 'END { print $. }' Can't find string terminator "'" anywhere before EOF at -e line 1.'
g <Ctrl-g>
, он покажет вам количество строк, слов, столбцов и байтов