Как я могу подсчитать количество строк файла с общими инструментами? [Дубликат]

    

У этого вопроса уже есть ответ:

    
  •              подсчет строк в файле                                      6 ответов                          
  •     

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

Каким будет лучший способ? Любой соответствующий флаг в grep или cat?

111 голосов | спросил k-man 24 42011vEurope/Moscow11bEurope/MoscowThu, 24 Nov 2011 19:13:29 +0400 2011, 19:13:29

6 ответов


134

Если вы уже собрали вывод grep в файле, вы можете вывести нумерованный список с помощью:

cat -n myfile

Если вам нужно только количество строк, просто выполните:

wc -l myfile

Нет абсолютно никаких оснований:

cat myfile | wc -l

... поскольку это ненужно делает I /O (cat), который должен повторяться wc. Кроме того, у вас есть два процесса, в которых достаточно.

Если вы хотите grep на свой терминал и распечатать количество совпадений в конце, вы можете сделать:

grep whatever myfile | tee /dev/tty | wc -l
ответил JRFerguson 24 42011vEurope/Moscow11bEurope/MoscowThu, 24 Nov 2011 20:03:13 +0400 2011, 20:03:13
53

Флаг -c выполнит задание. Например:

 grep -c ^ filename

будет считать строки, возвращаемые grep

ответил peri4n 24 42011vEurope/Moscow11bEurope/MoscowThu, 24 Nov 2011 19:18:23 +0400 2011, 19:18:23
17

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

your_command | wc -l

Из руководства:

NAME
       wc - print newline, word, and byte counts for each file

...

       -l, --lines
          print the newline counts
ответил aioobe 24 42011vEurope/Moscow11bEurope/MoscowThu, 24 Nov 2011 19:15:37 +0400 2011, 19:15:37
4

Вы можете использовать wc -l для получения количества строк.

Пример:

$ cat foobar.txt | wc -l
ответил 24 42011vEurope/Moscow11bEurope/MoscowThu, 24 Nov 2011 19:17:07 +0400 2011, 19:17:07
3

Использование AWK для подсчета строк в файле

awk 'END {print NR}' filename
ответил Vivek parikh 22 +03002015-10-22T10:46:00+03:00312015bEurope/MoscowThu, 22 Oct 2015 10:46:00 +0300 2015, 10:46:00
0

Не используйте wc: он не учитывает последнюю строку, если она не заканчивается символом конца строки (по крайней мере, на mac). Используйте это вместо:

nbLines=$(cat -n file.txt | tail -n 1 | cut -f1 | xargs)
ответил ling 18 +03002015-10-18T08:36:46+03:00312015bEurope/MoscowSun, 18 Oct 2015 08:36:46 +0300 2015, 08:36:46

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132