it-swarm-ru.tech

Как считать строки в документе?

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

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?

917
Alucard

Используйте 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
1724
user85509

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

$ wc -l file

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

$ grep -w "pattern" -c file  

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

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

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

130
Lauro Oliveira
wc -l <file.txt>

Или же

command | wc -l
67
John Kugelman

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

wc -l file

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

awk 'END{print NR}' file

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

grep -c ".*" file
42
ghostdog74

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

25
theunamedguy

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

find . -type f -exec wc -l {} +
22
storen

Используйте wc:

wc -l <filename>
21
Vivin Paliath

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

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
14
ggb667

Я использовал это:

cat myfile.txt | wc -l

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

wc -l myfile.txt

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

wc -l < myfile.txt

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

7
Buttle Butkus

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

nl filename

От man nl:

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

7
decimal

Я видел этот вопрос, когда искал способ подсчета нескольких строк файлов, поэтому, если вы хотите сосчитать несколько строк в файле .txt, вы можете сделать это,

cat *.txt | wc -l

он также будет работать на одном файле .txt;)

5
talsibony

Выше приведен предпочтительный метод, но команда "cat" также может быть полезна:

cat -n <filename>

Покажет вам все содержимое файла с номерами строк.

5
Yogesh
wc -l file.txt | cut -f3 -d" "

Возвращает только количество строк

4
Umur Kontacı
cat file.log | wc -l | grep -oE '\d+'
  • grep -oE '\d+': чтобы вернуть цифры номера ТОЛЬКО.
4
AechoLiu

Перенаправление/передача выходного файла в wc -l должно быть достаточно, как показано ниже:

cat /etc/fstab | wc -l

который затем предоставит нет. только линий.

3
tk3000

Или подсчитайте все строки в подкаталогах с шаблоном имени файла (например, файлы журнала с метками времени в имени файла):

wc -l ./**/*_SuccessLog.csv
2
jwebuser

Я знаю, что это старый , но все же: Количество отфильтрованных строк

Мой файл выглядит так:

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

OR

grep -c "OK" filename
2

Я только что сделал программу для этого (с node)

npm install gimme-lines
gimme-lines verbose --exclude=node_modules,public,vendor --exclude_extensions=html

https://github.com/danschumann/gimme-lines/tree/master

1
Funkodebat

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

count=$(wc -l < file.txt) echo "Number of lines: $count"

1
Konstantin F

Как говорили другие, wc -l - лучшее решение, но для дальнейшего использования вы можете использовать Perl:

Perl -lne 'END { print $. }'

$. содержит номер строки, а блок END будет выполнен в конце скрипта.

0
Majid Azimi