Как удалить имя файла из вывода 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$