Как удалить имя файла из вывода wc -l?

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

В настоящее время, если я делаю:

wc -l /path/to/file

Для файла с 176 строками вывод:

176 /path/to/file

Это внутри скрипта bash, и результирующее число будет присвоено в качестве значения переменной.

4 ответа

Решение

Я бы использовал:

<file wc -l

Который в обязательном порядке cat file | wc -l не нужно форкать оболочку и запускать другой процесс (и работает быстрее):

% time </tmp/ramdisk/file wc -l     
8000000
wc -l < /tmp/ramdisk/file  0,07s user 0,06s system 97% cpu 0,132 total
% time cat /tmp/ramdisk/file | wc -l
8000000
cat /tmp/ramdisk/file  0,01s user 0,16s system 80% cpu 0,204 total
wc -l  0,09s user 0,10s system 94% cpu 0,203 total

(/tmp/ramdisk/file был сохранен на виртуальном диске для ввода-вывода и кэширования из уравнения.)

Однако для небольших файлов разница действительно незначительна.


Еще один способ будет:

wc -l file | cut -d ' ' -f 1

Который в моих тестах работает примерно так же, как <file wc -l,

Вы можете сделать это с одним простым вкладышем, используя cat.cat deluge1.log | wc -l

Ответ слишком прост, чтобы требовать длительного ответа.

еще один более чистый вариант wc -l имя файла | awk '{напечатать $1}

пример списка записей в файле

      bash-4.1$ wc -l ../CBB_Nodes.txt | awk '{print $1}' 
398
bash-4.1$ 
without awk it would have been as usual with the file name. 

bash-4.1$ wc -l ../CBB_Nodes.txt
398 ../CBB_Nodes.txt
bash-4.1$ 

Еще одна простая альтернатива, которая помогла мне.

      cat /c/dev/P2Working/.gitignore | wc -l

Другие вопросы по тегам