Как считать строки в документе? - PullRequest
925 голосов
/ 29 июня 2010

У меня есть такие строки, и я хочу знать, сколько строк у меня на самом деле ...

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?

Ответы [ 20 ]

1747 голосов
/ 29 июня 2010

Использование 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
130 голосов
/ 29 июня 2010

Для подсчета всех строк используйте:

$ wc -l file

Для фильтрации и подсчета только строк с использованием шаблона:

$ grep -w "pattern" -c file  

Или используйте -v, чтобы инвертировать совпадение:

$ grep -w "pattern" -c -v file 

См. Страницу руководства grep, чтобы взглянуть на аргументы -e, -i и -x ...

67 голосов
/ 29 июня 2010
wc -l <file.txt>

Или

command | wc -l
42 голосов
/ 29 июня 2010

Есть много способов. использование wc равно единице.

wc -l file

другие включают

awk 'END{print NR}' file

sed -n '$=' file (GNU sed)

grep -c ".*" file
25 голосов
/ 01 апреля 2013

Инструмент wc является «счетчиком слов» в UNIX и UNIX-подобных операционных системах, вы также можете использовать его для подсчета строк в файле, добавив параметр -l, поэтому wc -l foo будет считатьколичество строк в foo.Вы также можете передать вывод из программы, подобной этой: ls -l | wc -l, которая скажет вам, сколько файлов находится в текущем каталоге.

22 голосов
/ 19 января 2015

Если вы хотите проверить общую строку всех файлов в каталоге, вы можете использовать find и wc:

find . -type f -exec wc -l {} +
21 голосов
/ 29 июня 2010

Использование wc:

wc -l <filename>
14 голосов
/ 15 ноября 2013

Если все, что вам нужно, это количество строк (а не количество строк и глупое имя файла, возвращающегося):

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
7 голосов
/ 19 января 2015

Я использую это:

cat myfile.txt | wc -l

Я предпочитаю его принятому ответу, потому что он не печатает имя файла, и вам не нужно использовать awk, чтобы это исправить. Принятый ответ:

wc -l myfile.txt

Но я думаю, что лучший ответ GGB667:

wc -l < myfile.txt

Вероятно, я буду использовать это с этого момента. Это немного короче, чем я. Я придерживаюсь своего старого способа сделать это в случае, если кто-то предпочитает это. Вывод одинаков с этими двумя методами.

7 голосов
/ 06 сентября 2013

Используйте nl как это:

nl filename

С man nl:

Запись каждого ФАЙЛА в стандартный вывод с добавлением номеров строк. С нет ФАЙЛА, или если ФАЙЛ - -, прочитайте стандартный ввод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...